在PHP过滤器列表中有一个选项可以用来清理整数:
FILTER_SANITIZE_NUMBER_INT - 移除所有数字、正负号以外的字符。
如果我们使用以下代码:
filter_var($var2San, FILTER_SANITIZE_NUMBER_INT);
这将清除点
.
和逗号,
,但+
和-
符号保留不变。例如:++++ --- 1.110,4 <b>m<sup>2</sup></b>
被清理为 ++++---111042
。理想情况下,filter_var
在数字为0时应返回false
,即数字必须是自然数,更具体地说,是正整数。
因此,一个FILTER_SANITIZE_NUMBER_NATURAL
会很方便... 是否有解决方法或需要使用RegExp?
ctype_digit()
函数,它在最大值上没有限制,但也不允许“+”、千位分隔符、小数点等。它实际上就像你使用正则表达式“^[0-9]+$”来验证字符串一样,只是速度更快。 - Ghedipunkfalse
或true
,ctype_digit 似乎是一个非常好的替代方案,感谢! - Armfoot