我正在尝试设置类似于 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
是一个瘦包装器。
关于php - 捕获正则表达式编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535765/