首頁  >  文章  >  後端開發  >  perl正規表示式 模板引擎正規表示式除錯小技巧

perl正規表示式 模板引擎正規表示式除錯小技巧

WBOY
WBOY原創
2016-07-29 08:46:161301瀏覽

基於正規表示式替換的模板引擎很容易遇到正規表示式最大回溯/遞迴的限制。
惰性匹配並不可怕,正常情況下模板並不會不夠用,往往不會超出限制,discuz的模板引擎就大量使用了。但是因此而不去注意、不去學習,則容易書寫錯誤並遇到問題。
當preg_*回傳的是null的時候則要注意了,判斷函數是is_null.
出錯並不可怕,但是最好把錯誤都完整的輸出,這樣調試就很容易了。
除了輸出出錯原因,還要輸出匹配的文字和使用的正則,這樣就很容易調試了。
PHP程式碼

複製程式碼 程式碼如下:


if (is_null($tmp)){
$error_code = pregg; :
echo 'PREG_NO_ERROR';
break;
case PREG_INTERNAL_ERROR:
echo 'PREG_INTERNAL_ERROR';
break;
case PREGEG_BACKTRACK_LIMITERROR: LIPACK;
case PREG_RECURSION_LIMIT_ERROR:
echo 'PREG_RECURSION_LIMIT_ERROR';
break;
case PREG_BAD_UTF8_ERROR :
echo 'PREG_BAD_UTF8_ERROR';
break;
case PREG_BAD_UTF8_OFFSET_ERROR:
echo 'PREG_BAD_UTF8_OFFSET_ERROR';
echo 'PREG_BAD_UTF8_OFFSET_ERROR';
echo 'PREG_BAD_UTF8_OFFSET_ERROR';
echo 'PREG_BAD_UTF8_OFFSET_ERROR';
echo
exit;
}



參考資料
1、2010 , Laruence

《深悉正規(pcre)最大回溯/遞歸限制》

2、2011, PHP中文手冊
preg_last_error
以上就介紹了perl正規表示式 模板引擎正規表示式調試小技巧,包括了perl正規表示式方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn