【发布时间】:2011-10-19 16:00:58
【问题描述】:
我正在尝试从我的代码中删除所有非数字字符,但 FILTER_SANITIZE_NUMBER_INT 允许加号和减号。
如何使用可以添加到代码中的 PHP 删除它们?
这是我的代码。
$a = filter_var($a, FILTER_SANITIZE_NUMBER_INT);
【问题讨论】:
标签: php
我正在尝试从我的代码中删除所有非数字字符,但 FILTER_SANITIZE_NUMBER_INT 允许加号和减号。
如何使用可以添加到代码中的 PHP 删除它们?
这是我的代码。
$a = filter_var($a, FILTER_SANITIZE_NUMBER_INT);
【问题讨论】:
标签: php
在这种情况下,您可能需要考虑简单地将结果转换为 int 以删除加号 (+)。
$a = (int) filter_var($a,FILTER_SANITIZE_NUMBER_INT);
如果您还需要删除减号 (-),有效地获取数字的绝对值,请使用 PHP 的 abs() 函数:
$a = abs((int) filter_var($a,FILTER_SANITIZE_NUMBER_INT));
【讨论】:
str_replace('-', '', "123-456")php.net/manual/en/function.str-replace.php。
我采用了以下解决方案。大写“D”代表“非数字”。
public static function sanitize_integer($str)
{
return (int) preg_replace('/\D/', '', $str);
}
如果您的输入字符串可能有您希望保留的前导零,请不要将变异字符串转换为整数。
return preg_replace('/\D/', '', $str);
要减少替换次数(但结果相同),请使用+(一个或多个量词)在每次替换期间删除多个连续的非数字字符。
return preg_replace('/\D+/', '', $str);
【讨论】: