如何判断给定字符串是否是PHP preg_match的有效输入?

时间:2012-02-27 17:33:10

标签: php pcre

我正在构建一个管理UI,用户可以在其中管理列表PCRE字符串,这些字符串会在我的应用程序的其他位置传递给PHP的preg_match

在存储用户的输入以供preg_match稍后使用之前,我首先要确认用户的输入是有效的PCRE表达式,否则稍后将其传递给preg_match会引发错误。

验证给定字符串以查看它是否是PHP中的有效PCRE的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

您最好的选择是将字符串传递给preg_match,并捕获发生的任何错误。

try{
    preg_match($in_regex, $string, $results);
    //Use $results
} catch (Exception $e) {
    echo "Sorry, bad regex (/" . $in_regex . "/)";
}

[编辑] 由于这不起作用,您可以尝试:

function bad_regex($errno, $errstr, $errfile, $errline){
    echo "Sorry, bad regex.";
}
set_error_handler("bad_regex");
preg_match($in_regex, $string, $results);
restore_error_handler();