将preg_match()结果与(bool)一起使用?

问题描述 投票:0回答:1

我想我将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)

[另一个想法是:将来结果为01的东西也是安全的吗?你有经验吗?您可以举报什么?

编辑0:鉴于没有比较运算符的if,问题被扩大了。 0是否总是false1总是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不是!

php boolean preg-match
1个回答
0
投票

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

}
© www.soinside.com 2019 - 2024. All rights reserved.