一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 模板引擎正則表達式調試小技巧

模板引擎正則表達式調試小技巧

2019-12-07 15:31PHP教程網 PHP教程

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

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

復制代碼代碼如下:


<?php 
if (is_null($tmp)){ 
$error_code = preg_last_error(); 
switch($error_code){ 
case PREG_NO_ERROR : 
echo 'PREG_NO_ERROR'; 
break; 
case PREG_INTERNAL_ERROR: 
echo 'PREG_INTERNAL_ERROR'; 
break; 
case PREG_BACKTRACK_LIMIT_ERROR: 
echo 'PREG_BACKTRACK_LIMIT_ERROR'; 
break; 
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'; 
break; 
default: 
echo 'UNKNOW ERROR'; 

exit; 

 

參考資料
1、2010, Laruence 《深悉正則(pcre)最大回溯/遞歸限制》
2、2011, PHP中文手冊 preg_last_error

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 火影小南被爆羞羞网站 | 日韩欧美一区二区三区免费观看 | seetube18日本第一次 | 久久免费看少妇级毛片蜜臀 | 好吊色永久免费视频大全 | 国产精品久久久久久福利 | 亚洲精品九色在线网站 | 青青草伊人久久 | 天天综合天天综合色在线 | 免费在线看 | 黑人巨鞭大战白妞10级 | 99久久精品免费看国产高清 | 牛人国产偷窥女洗浴在线观看 | 星星动漫无删减在线观看 | 韩国三级大全 | blacked黑人hd2021 bestialityvideo另类 | haodiaocao几万部精彩视频 | zoofilivideo杂交3d | 国产欧美日韩图片一区二区 | 色综合久久六月婷婷中文字幕 | 嫩草影院永久入口在线观看 | 国产嘿咻| 亚洲大片在线观看 | 啪啪链接| 亚洲成年男人的天堂网 | 四虎影剧院| 胸大的姑娘中文字幕视频 | 国产v在线在线观看羞羞答答 | 亚洲性综合网 | 亚洲第一区二区快射影院 | 日日摸夜夜爽色婷婷91 | 日本爽p大片免费观看 | 秀婷程仪公欲息肉婷在线观看 | 闺蜜高h| 久草在线福利资站免费视频 | gay中国| 厨房里摸着乳丰满在线观看 | 国产精品免费aⅴ片在线观看 | 2012年免费中文视频 | 国产不卡视频 | 日本中文字幕一区二区高清在线 |