preg_match随机行为

时间:2012-12-24 09:39:24

标签: php preg-match

除其他外,我有这些字符串:“boards /”,“localhost”,“mysql”,“0”,“1”,“Testing Board”,“PLAIN”。

我从表单中将其作为发布数据接收。其中一些可以有多字节字符,但没有使用的测试字符串有多字节字符。

我通过if (!preg_match('/^./u', $str))运行它们。

如果检查主要评估为false,即preg_match返回1.但有时它的计算结果为true,即preg_match为0。

真(0)似乎完全随机。但是如果其中一个字符串评估为true,那么它们都会这样做。它是全部或全部。

是否有人对这种看似随机的行为有某种解释?也许是一个解决方案来修复它?

干杯 JARI

1 个答案:

答案 0 :(得分:0)

查看文档中的警告。 http://php.net/manual/en/function.preg-match.php

  

警告   此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

当您将preg_match值设为01时,它将返回该匹配项。如果处理不当,这将导致对true的评估。

1 == true   //true
1 === true  //false
0 == false  //true
0 === false //false
1 == false  //false
1 === false //false
0 == true   //false
0 === true  //false