Как я могу сказать, является ли данная строка допустимым входным параметром в preg_match PHP? - PullRequest
6 голосов
/ 27 февраля 2012

Я создаю пользовательский интерфейс администратора, где пользователь может управлять списком строк PCRE, которые передаются PHP preg_match в других точках моего приложения.

Перед сохранением пользовательского ввода для последующего использования preg_match, я сначала хотел бы проверить, что пользовательский ввод является допустимым выражением PCRE, в противном случае позже при передаче его в preg_match выдается ошибка.

Каков наилучший способ проверки заданной строки, чтобы увидеть, является ли она действительным PCRE в PHP?

1 Ответ

3 голосов
/ 27 февраля 2012

Лучше всего будет просто передать строку в 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();
...