Php 预匹配函数不';我不能正常工作

Php 预匹配函数不';我不能正常工作,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

我试图过滤所有的字母和特殊字符,只允许数字。但每当我将0作为变量传递时,它都会返回false

 $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'
和int
0
的计算结果均为
FALSE
。即
'0'==FALSE&&0==FALSE
。这就是为什么您的条件返回
FALSE
,因为
'0'==FALSE

您可以将您的条件改为:
preg_replace('/[^0-9]/','$string)!=''


现在,在过滤掉所有非数字字符后,您将检查字符串是否为空,即如果您的字符串仅包含非数字字符,它将返回
FALSE

,我怀疑这是否完全符合您的要求-我可能误解了。仅当字符串仅包含非数字字符时,才会返回false。当存在任何非数字字符时,是否应返回
FALSE