我在 PHP 中使用一个函数来处理数字。 目的是清理数字,并可选择将空值转换为零。 它开始对我来说是用于准备 sql,但现在用于更多地方。 这是:
function clean_num ($num, $null_to_zero = true) {
$num = preg_replace("/[^-0-9.0-9$]/","",$num);
if (strlen($num) == 0)
$num = ($null_to_zero) ? 0 : null;
else if (strlen($num) == 1 && ($num == '-' || $num == '.'))
$num = ($null_to_zero) ? 0 : null;
return $num;
}
有人对更快、更好的方法有任何想法吗? 它有效,正则表达式足够简单,应该涵盖我需要的所有情况,但是......不同的正则表达式可能会做同样的事情,而无需其他垃圾。
正则表达式
[^-0-9.0-9$]
匹配任何字符
.
$
在 char 类中不需要有两个
0-9
,因此有效的正则表达式是: [^-0-9.$]
或 [^-\d.$]