基於正規表示式替換的模板引擎很容易遇上正規表示式最大回溯/遞迴的限制。
惰性匹配並不可怕,正常情況下模板並不會不夠用,往往不會超出限制,discuz的模板引擎就大量使用了。但是因此而不去注意、不去學習,則容易書寫錯誤並遇上問題。
當preg_*返回的是null的時候則要注意了,判斷函式是is_null.
出錯並不可怕,但是最好把錯誤都完整的輸出,這樣除錯就很容易了。
除了輸出出錯原因,還要輸出匹配的文字和使用的正則,這樣就很容易除錯了。
php**
復www.cppcns.com制** **如下:
<?php
if (is_null($tmp))
exit; }
參考資料
1、2010, laruence 《深悉正則(pcre)最大回溯/遞迴限制》
2、2011, php中文手冊 preg_last_error
本文標題: 模板引擎正規表示式除錯小技巧
本文位址: /wangluo/php/82970.html
正規表示式技巧
正規表示式 貪婪與懶惰 當正規表示式中包含能接受重複的限定符時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。有時,我們更需要懶惰匹配,...
正規表示式學習 引擎
目錄傳統nfa優化 優化2 將文字獨立出來 優化3 將錨點獨立出來 優化4 模擬開頭字元識別 優化5 使用固化分組和占有優先量詞 優化6 消除迴圈 傳統型nfa支援忽略優先量詞 dfa不支援捕獲型括號和回溯 優先選擇最左端的匹配結果 標準的匹配量詞是匹配優先的 多選結構按序排列,合理安排次序,減少回...
常用正規表示式模板
很多不太懂正則的朋友,在遇到需要用正則校驗資料時,往往是在網上去找很久,結果找來的還是不很符合要求。所以我最近把開發中常用的一些正規表示式整理了一下,在這裡分享一下。給自己留個底,也給朋友們做個參考。一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數...