如何知道正则崩溃了?
我这边错误码是2,原来是回溯次数太多,归根结底是正则表达式非贪婪模式导致的效率陷阱,改正则表达式解决。$content = preg_replace_callback(xxx);
//如果返回null,说明崩溃了
if(is_null($content)) {
//打印错误码
echo preg_last_error();
}
错误码如下:
PREG_NO_ERROR 0
没有匹配错误时调用preg_last_error()返回. php 5.2.0可用.
PREG_INTERNAL_ERROR 1
如果有PCRE内部错误时调用preg_last_error()返回. php 5.2.0可用.
PREG_BACKTRACK_LIMIT_ERROR 2
如果调用回溯限制超出, 调用preg_last_error()时返回. php 5.2.0可用.
PREG_RECURSION_LIMIT_ERROR 3
如果递归限制超出, 调用preg_last_error()时返回. php 5.2.0可用.
PREG_BAD_UTF8_ERROR 4
如果最后一个错误时由于异常的utf-8数据(仅在运行在 UTF-8 模式正则表达式下可用.) 导致的, 调用preg_last_error()返回. php 5.2.0可用.
PREG_BAD_UTF8_OFFSET_ERROR 5
如果偏移量与合法的urf-8代码不匹配(仅在运行在 UTF-8 模式正则表达式下可用.). 调用preg_last_error()返回. php 5.2.0可用.