Я пытаюсь настроить службу, подобную 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
), если регулярное выражение не скомпилируется.
Один вариант, который я рассматриваю использовать буферизацию вывода для захвата предупреждения, но должен быть лучший способ.
Лучшее, что вы можете сделать, это опустить сообщение об ошибке с помощью @
, проверить возвращаемое значение и, если false
, вызвать error_get_last
.
Вы также можете написать свою собственную оболочку вокруг pcre_compile
. Он получает указатели для хранения кодов ошибок и строк. Не должно быть слишком сложно; preg_match
- тонкая обертка.