1

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

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

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

if check 主要评估为假,即 preg_match 返回 1。但有时它评估为 true,即来自该 preg_match 的 0。

真正的 (0) 似乎完全随机。但是,如果其中一个字符串的计算结果为 true,那么它们都可以。要么全部,要么没有。

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

干杯贾里

4

1 回答 1

0

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

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

当您运行preg_matchon 值时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
于 2012-12-24T09:46:40.180 回答