大陆性a及毛片,日韩精品不卡,国产精品第四页,日韩黄在线观看,欧美三级一区二区,国产中出在线观看,日韩久久久精品

    電話

    0411-39943997

仟億科技
客服中心
  • 電話
  • 電話咨詢:0411-39943997
  • 手機(jī)
  • 手機(jī)咨詢:15840979770
    手機(jī)咨詢:13889672791
網(wǎng)絡(luò)營銷 >更多
您現(xiàn)在的位置:首頁 > 新聞中心 > 常見問題

網(wǎng)頁模板引擎正則表達(dá)式調(diào)試的技巧

作者:billionnet 發(fā)布于:2012/3/28 17:59:33 點(diǎn)擊量:

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

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


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


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


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


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


PHP代碼











  1. if (is_null($tmp)){   

  2.     $error_code = preg_last_error();   

  3.     switch($error_code){   

  4.         case PREG_NO_ERROR :   

  5.             echo ""PREG_NO_ERROR"";   

  6.             break;   

  7.         case PREG_INTERNAL_ERROR:   

  8.             echo ""PREG_INTERNAL_ERROR"";   

  9.             break;   

  10.         case PREG_BACKTRACK_LIMIT_ERROR:   

  11.             echo ""PREG_BACKTRACK_LIMIT_ERROR"";   

  12.             break;   

  13.         case PREG_RECURSION_LIMIT_ERROR:   

  14.             echo ""PREG_RECURSION_LIMIT_ERROR"";   

  15.             break;   

  16.         case PREG_BAD_UTF8_ERROR:   

  17.             echo ""PREG_BAD_UTF8_ERROR"";   

  18.             break;   

  19.         case PREG_BAD_UTF8_OFFSET_ERROR:   

  20.             echo ""PREG_BAD_UTF8_OFFSET_ERROR"";   

  21.             break;   

  22.         default:   

  23.             echo ""UNKNOW ERROR"";   

  24.     }   

  25.     exit;   

  26. }  


參考資料


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


2、2011, PHP中文手冊 preg_last_error


 



分享到:


Copyright@ 2011-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區(qū)中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明