为什么preg_match
函数返回一个整数而不是布尔值? The documentation提到false
表示失败,但为什么不null
?
答案 0 :(得分:4)
我想,这与preg_match_all
一致 - 两个函数都返回正则表达式匹配的次数。关于false
与null
问题,它实际上并不重要。如果发生不良事件(例如,格式错误的正则表达式),preg_
函数会发出警告。如果以合理的方式处理错误,您将永远不需要检查此值。例如:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
$regex = '/x+++++/'; # hmm...
try {
$number = preg_match($regex, "input");
print "matched $number times";
} catch(ErrorException $e) {
print "ERROR " . $e->getMessage();
}