1. 简介
在PHP编程中,常常需要数据过滤。过滤器(Filter)是用于过滤和/或验证数据的函数。PHP过滤器(Filter)有很多类型,本文将会详细介绍其中的一个:FILTER_SANITIZE_NUMBER_FLOAT常量。
2. FILTER_SANITIZE_NUMBER_FLOAT常量的功能
FILTER_SANITIZE_NUMBER_FLOAT常量用于删除字符串中不合法的字符,仅留下数字、加号(+)、负号(-)和分隔符。其主要功能是过滤数字和浮点数。
2.1 FILTER_SANITIZE_NUMBER_FLOAT常量的语法
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, $filter_options);
参数解释:
$number: 需要过滤的数字或浮点数
$filter_options: 可选参数,指定过滤器的行为,例如去除末尾的0,指定小数点表示方法等等。
3. 示例
以下是使用FILTER_SANITIZE_NUMBER_FLOAT常量过滤数据的示例:
3.1 示例代码
$number = "5a.1b4 2c2";
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT);
echo $sanitized_number;
3.2 示例输出
Output: 5.1422
在上面的例子中,字符串“5a.1b4 2c2”中的非数字字符被成功过滤,输出结果为“5.1422”。此处输出结果中的小数点,
是因为在默认情况下,该过滤器不会删除小数点和加减号,因此当输入字符串中有小数点时,
不会被删除,直接保留。
3.3 去掉小数点及末尾0
若想过滤掉小数点及小数末尾的0,则可以在$filter_options参数中添加FILTER_FLAG_ALLOW_FRACTION和FILTER_FLAG_STRIP_TAIL参数。
3.3.1 示例代码
$number = "8.9000";
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_STRIP_TAIL);
echo $sanitized_number;
3.3.2 示例输出
Output: 8.9
在例子中,输入字符串"8.9000"中的末尾的0被成功删除,小数点也一并被删除。
3.4 指定小数点
使用FILTER_SANITIZE_NUMBER_FLOAT常量还可以指定小数名方式,详见下例。
3.4.1 示例代码
$number = "8,9";
$filter_options = array("decimal" => ",");
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, array("options" => $filter_options));
echo $sanitized_number;
3.4.2 示例输出
Output: 8.9
在本例中,"$filter_options"数组中指定了小数点为",",最终输出结果即为"8.9"。
4. 总结
由上述例子可以发现,FILTER_SANITIZE_NUMBER_FLOAT常量可以用于过滤数字和浮点数,而且还可以
通过第三个参数指定过滤器行为,进一步加强其过滤功能。此外,FILTER_SANITIZE_NUMBER_FLOAT常量的另一大优势
在于其过滤结果是可预计的,可用于开发必须规范而严格的应用程序。