为什么`preg_match`返回一个整数?

时间:2014-05-28 13:20:47

标签: php regex preg-match

为什么preg_match函数返回一个整数而不是布尔值? The documentation提到false表示失败,但为什么不null

1 个答案:

答案 0 :(得分:4)

我想,这与preg_match_all一致 - 两个函数都返回正则表达式匹配的次数。关于falsenull问题,它实际上并不重要。如果发生不良事件(例如,格式错误的正则表达式),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();
}