php - 捕获正则表达式编译错误

标签 php regex

我正在尝试设置类似于 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/

相关文章:

javascript - 在发送到 BASE64 之前调整图像大小(不使用 img 元素)

c - 具有扩展语法的 POSIX 正则表达式与应有的位置不匹配

带有可选子字符串的 JavaScript RegEx 模式

php - 运行 WHERE 子句后仅每隔 2 行显示一次

php - 选择选项以根据 mysql 填充的下拉列表更新第二个选择选项

php - HTML2PDF - 添加多个页面

regex - 如何检测 Perl 正则表达式中有多少捕获组?

php - 简单的正则表达式替换

c# - 如何在同一个文件中优雅地实现多个字符串替换?

php - 在生产中使用 mysqli_connect() 从 Mysql 选择行时出现问题