Перехват ошибок компиляции регулярного выражения

Я пытаюсь настроить службу, подобную rubular , но с PHP в качестве языка, использующего семейство функций preg. Он примет входное регулярное выражение, тестовую строку и запустит preg_match () .

Как узнать, произошла ли ошибка компиляции (например, неверное регулярное выражение), и если это так в чем была ошибка? Обычно он будет выдавать предупреждения вроде:

Warning: preg_match() [function.preg-match]: Compilation failed: missing ) at offset x in ****** on line y

pcre_last_error () здесь совершенно бесполезен, так как он вернет 0 ( PREG_NO_ERROR ), если регулярное выражение не скомпилируется.

Один вариант, который я рассматриваю использовать буферизацию вывода для захвата предупреждения, но должен быть лучший способ.

7
задан NullUserException 21 August 2010 в 00:39
поделиться

1 ответ

Лучшее, что вы можете сделать, это опустить сообщение об ошибке с помощью @ , проверить возвращаемое значение и, если false , вызвать error_get_last .

Вы также можете написать свою собственную оболочку вокруг pcre_compile . Он получает указатели для хранения кодов ошибок и строк. Не должно быть слишком сложно; preg_match - тонкая обертка.

2
ответ дан 7 December 2019 в 18:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: