除其他外,我有这些字符串:“boards /”,“localhost”,“mysql”,“0”,“1”,“Testing Board”,“PLAIN”。
我从表单中将其作为发布数据接收。其中一些可以有多字节字符,但没有使用的测试字符串有多字节字符。
我通过if (!preg_match('/^./u', $str))
运行它们。
如果检查主要评估为false,即preg_match返回1.但有时它的计算结果为true,即preg_match为0。
真(0)似乎完全随机。但是如果其中一个字符串评估为true,那么它们都会这样做。它是全部或全部。
是否有人对这种看似随机的行为有某种解释?也许是一个解决方案来修复它?
干杯 JARI
答案 0 :(得分:0)
查看文档中的警告。 http://php.net/manual/en/function.preg-match.php
警告强> 此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。
当您将preg_match
值设为0
和1
时,它将返回该匹配项。如果处理不当,这将导致对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