preg_match函数无法正常工作

时间:2014-03-20 04:34:45

标签: php regex preg-match

我正在尝试过滤所有字母和特殊字符,并且只允许数字。但每当我将0作为变量传递时,它就会让我失误。

 $string = 0;
   if(preg_replace('/[^0-9]/', '', $string) == true){
      echo 'True';
   }else{
      echo 'False';
   }

1 个答案:

答案 0 :(得分:0)

<强> preg_replace

  

如果找到匹配项,则返回新主题,否则返回   如果发生错误,主题将保持不变或为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