久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業(yè)報道 淘寶運(yùn)營 網(wǎng)站建設(shè) 軟件開發(fā) 400電話
  當(dāng)前位置: 首頁 » 資訊 » 網(wǎng)站建設(shè) » 正文

模板引擎正則表達(dá)式調(diào)試小技巧

放大字體  縮小字體 發(fā)布日期:2018-02-18  來源:新格網(wǎng)  作者:新格網(wǎng)  瀏覽次數(shù):169  【去百度看看】
核心提示:很久沒有遇上PHP難題了,這次正則問題占了一點時間,還是老問題最大回溯、遞歸限制問題。學(xué)習(xí)透之后其實并不難修改調(diào)試有這類問題的正則。

很久沒有遇上PHP難題了,這次正則問題占了一點時間,還是老問題最大回溯、遞歸限制問題。學(xué)習(xí)透之后其實并不難修改調(diào)試有這類問題的正則。主要是以下幾點。

基于正則表達(dá)式替換的模板引擎很容易遇上正則表達(dá)式最大回溯/遞歸的限制。

惰性匹配并不可怕,正常情況下模板并不會不夠用,往往不會超出限制,discuz的模板引擎就大量使用了。但是因此而不去注意、不去學(xué)習(xí),則容易書寫錯誤并遇上問題。

當(dāng)preg_*返回的是null的時候則要注意了,判斷函數(shù)是is_null.

出錯并不可怕,但是最好把錯誤都完整的輸出,這樣調(diào)試就很容易了。

除了輸出出錯原因,還要輸出匹配的文本和使用的正則,這樣就很容易調(diào)試了。

PHP代碼

  1. <?php   
  2. if (is_null($tmp)){   
  3.     $error_code = preg_last_error();   
  4.     switch($error_code){   
  5.         case PREG_NO_ERROR :   
  6.             echo 'PREG_NO_ERROR';   
  7.             break;   
  8.         case PREG_INTERNAL_ERROR:   
  9.             echo 'PREG_INTERNAL_ERROR';   
  10.             break;   
  11.         case PREG_BACKTRACK_LIMIT_ERROR:   
  12.             echo 'PREG_BACKTRACK_LIMIT_ERROR';   
  13.             break;   
  14.         case PREG_RECURSION_LIMIT_ERROR:   
  15.             echo 'PREG_RECURSION_LIMIT_ERROR';   
  16.             break;   
  17.         case PREG_BAD_UTF8_ERROR:   
  18.             echo 'PREG_BAD_UTF8_ERROR';   
  19.             break;   
  20.         case PREG_BAD_UTF8_OFFSET_ERROR:   
  21.             echo 'PREG_BAD_UTF8_OFFSET_ERROR';   
  22.             break;   
  23.         default:   
  24.             echo 'UNKNOW ERROR';   
  25.     }   
  26.     exit;   
  27. }  

參考資料

1、2010, Laruence 《深悉正則(pcre)最大回溯/遞歸限制》

2、2011, PHP中文手冊 preg_last_error

(來源:微風(fēng)實驗室

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規(guī)舉報 ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評論

 
網(wǎng)站首頁 | 關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務(wù) | 積分換禮 | 網(wǎng)站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業(yè)800網(wǎng) · 提供技術(shù)支持