PHP 正则表达式函数

PHP preg_last_error_msg() 函数返回最后一次 PCRE 正则表达式执行的错误消息。

注意:此函数自 PHP 8.0.0 起可用。

语法

preg_last_error_msg() 

参数

无需参数。

返回值

成功时返回错误消息,如果没有发生错误,则返回"PREG_NO_ERROR"。

示例:preg_last_error_msg() 示例

下面的示例显示了用法preg_last_error_msg() 函数。

<?php
$string = 'May 25, 2005';

//无效模式 - 缺少结束分隔符
$pattern = '/May';

$match = @preg_match($pattern, $string, $matches);

if(preg_last_error() !== PREG_NO_ERROR) {
  //如果发生错误则显示
  //错误信息
  echo preg_last_error_msg();
} else if($match) {
  //找到匹配项
  echo $matches[0];
} else {
  //未找到匹配项
  echo 'No matches found';
}
?> 

上述代码的输出将是:

Internal error 

示例:回溯限制耗尽

再考虑一个示例,其中此函数为用于获取最后一个 PCRE 正则表达式执行错误消息,该消息是回溯限制耗尽。

<?php
preg_match('/(?:\D+|)*[!?]/', 'foobar foobar foobar');

if (preg_last_error() !== PREG_NO_ERROR) {
  echo preg_last_error_msg();
}
?> 

上述代码的输出将是:

Backtrack limit exhausted