Php 预匹配函数不';我不能正常工作
我试图过滤所有的字母和特殊字符,只允许数字。但每当我将0作为变量传递时,它都会返回falsePhp 预匹配函数不';我不能正常工作,php,regex,preg-match,Php,Regex,Preg Match,我试图过滤所有的字母和特殊字符,只允许数字。但每当我将0作为变量传递时,它都会返回false $string = 0; if(preg_replace('/[^0-9]/', '', $string) == true){ echo 'True'; }else{ echo 'False'; } 如果找到匹配项,将返回新主题,否则返回 如果发生错误,主题将返回不变或NULL 当您选中preg_replace('/[^0-9]/','$string)=t
$string = 0;
if(preg_replace('/[^0-9]/', '', $string) == true){
echo 'True';
}else{
echo 'False';
}
如果找到匹配项,将返回新主题,否则返回
如果发生错误,主题将返回不变或NULL
当您选中preg_replace('/[^0-9]/','$string)=true
时,它将在字符串'0'
中删除所有非数字字符(仍然'0'
)后检查该字符串,并查看其计算结果是否为true
。字符串'0'
和int0
的计算结果均为FALSE
。即'0'==FALSE&&0==FALSE
。这就是为什么您的条件返回FALSE
,因为'0'==FALSE
您可以将您的条件改为:preg_replace('/[^0-9]/','$string)!=''代码>
现在,在过滤掉所有非数字字符后,您将检查字符串是否为空,即如果您的字符串仅包含非数字字符,它将返回FALSE
,我怀疑这是否完全符合您的要求-我可能误解了。仅当字符串仅包含非数字字符时,才会返回false。当存在任何非数字字符时,是否应返回FALSE
?