我想我将preg_match()
的结果与(bool)
一起使用,但我不确定。我认为不清楚结果不是true
还是false
。范例1:
if (((bool) preg_match($pattern, $string, $matches)) === true)
示例2:
if (((bool) !preg_match($pattern, $string, $matches)) === true)
示例3:
if (((bool) preg_match($pattern, $string, $matches)) === false)
示例4:
if (((bool) !preg_match($pattern, $string, $matches)) === false)
[另一个想法是:将来结果为0
或1
的东西也是安全的吗?你有经验吗?您可以举报什么?
编辑0:鉴于没有比较运算符的if
,问题被扩大了。 0
是否总是false
和1
总是true
?
示例5:
if ((preg_match($pattern, $string, $matches)))
示例6:
if ((!preg_match($pattern, $string, $matches)))
这是正确的吗?(preg_match($pattern, $string, $matches))
=0
|1
(!preg_match($pattern, $string, $matches))
=true
|false
不是!
preg_match()如果模式与给定的主题匹配,则返回1;如果不匹配,则返回0;如果发生错误,则返回FALSE。那是3个可能的答案。如果将其减小为布尔值(是/否),则会丢失一些信息。
$result = (bool) preg_match($pattern, $string, $matches);
$ result如果模式匹配则为true,否则为false或发生错误。
如果条件仅在preg_match返回1时执行,则此条件。
if (preg_match($pattern, $string, $matches)) {
}
如果未执行,则可能不匹配或出错。
必须严格比较才能区分所有3个变体:
$preg_match_result = preg_match($pattern, $string, $matches);
if($preg_match_result === 1) {
//pattern matches
}
elseif($preg_match_result === 0) {
//pattern not matches
}
else {
//$preg_match_result === false
//an error occurred
}