php正则返回错误函数preg_last_error()

作者:enenba | 发表于:2012-03-08 22:05 | 分类:php源码

php5.2开始,正则已经可以使用preg_last_error()函数来返回最后一次PCRE正则执行的错误代码.

使用此函数可以方便我们调试PHP的正则语句,写成一个函数。上码:

<?php

function preg_error() {
	$error_code = preg_last_error();
	switch ($error_code) {
		case PREG_NO_ERROR :
			echo 'PREG_NO_ERROR';
			echo '没有匹配错误';
			break;
		case PREG_INTERNAL_ERROR:
			echo 'PREG_INTERNAL_ERROR';
			echo 'PCRE内部错误';
			break;
		case PREG_BACKTRACK_LIMIT_ERROR:
			echo 'PREG_BACKTRACK_LIMIT_ERROR';
			echo '调用回溯限制超出';
			break;
		case PREG_RECURSION_LIMIT_ERROR:
			echo 'PREG_RECURSION_LIMIT_ERROR';
			echo '递归限制超出';
			break;
		case PREG_BAD_UTF8_ERROR:
			echo 'PREG_BAD_UTF8_ERROR';
			echo '异常的utf-8数据';
			break;
		case PREG_BAD_UTF8_OFFSET_ERROR:
			echo 'PREG_BAD_UTF8_OFFSET_ERROR';
			echo '偏移量与合法的urf-8代码不匹配';
			break;
		default:
			echo 'UNKNOW ERROR';
			echo '未知错误';
	} 
} 


//以下为测试内容
preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
preg_error();

echo '<br />';
preg_match('/foobar/', 'foobar foobar foobar');
preg_error();
?>

结果:

PREG_BACKTRACK_LIMIT_ERROR调用回溯限制超出
PREG_NO_ERROR没有匹配错误

end

上一篇: php官网解释正则中的“递归模式”   |   下一篇:深悉PHP正则(pcre)最大回溯/递归限制» 标签: php函数 PHP正则

评论: