亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2011年07月20日 22:57:14   作者:  
很久沒有遇上PHP難題了,這次正則問題占了一點(diǎn)時間,還是老問題最大回溯、遞歸限制問題。學(xué)習(xí)透之后其實(shí)并不難修改調(diào)試有這類問題的正則。主要是以下幾點(diǎn)。
基于正則表達(dá)式替換的模板引擎很容易遇上正則表達(dá)式最大回溯/遞歸的限制。
惰性匹配并不可怕,正常情況下模板并不會不夠用,往往不會超出限制,discuz的模板引擎就大量使用了。但是因此而不去注意、不去學(xué)習(xí),則容易書寫錯誤并遇上問題。
當(dāng)preg_*返回的是null的時候則要注意了,判斷函數(shù)是is_null.
出錯并不可怕,但是最好把錯誤都完整的輸出,這樣調(diào)試就很容易了。
除了輸出出錯原因,還要輸出匹配的文本和使用的正則,這樣就很容易調(diào)試了。
PHP代碼
復(fù)制代碼 代碼如下:

<?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

相關(guān)文章

  • PHP設(shè)計(jì)模式之狀態(tài)模式定義與用法詳解

    PHP設(shè)計(jì)模式之狀態(tài)模式定義與用法詳解

    這篇文章主要介紹了PHP設(shè)計(jì)模式之狀態(tài)模式定義與用法,結(jié)合實(shí)例形式分析了php狀態(tài)模式的概念、原理、定義、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • 詳解PHP Swoole長連接常見問題

    詳解PHP Swoole長連接常見問題

    長連接就是指在基于tcp的通訊中,一直保持連接,不管當(dāng)前是否發(fā)送或者接收數(shù)據(jù)。本文將詳細(xì)介紹PHP Swoole長連接的常見問題。
    2021-05-05
  • PHP函數(shù)strip_tags的一個bug淺析

    PHP函數(shù)strip_tags的一個bug淺析

    PHP 函數(shù) strip_tags 提供了從字符串中去除 HTML 和 PHP 標(biāo)記的功能,該函數(shù)嘗試返回給定的字符串 str 去除空字符、HTML 和 PHP 標(biāo)記后的結(jié)果。
    2014-05-05
  • Windows下編譯PHP5.4和xdebug全記錄

    Windows下編譯PHP5.4和xdebug全記錄

    這篇文章主要介紹了Windows下編譯PHP5.4和xdebug全記錄,本文講解了編譯環(huán)境以及相關(guān)軟件包、編譯過程、編譯中可能出現(xiàn)的錯誤問題處理等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • PHP實(shí)現(xiàn)從遠(yuǎn)程下載文件的方法

    PHP實(shí)現(xiàn)從遠(yuǎn)程下載文件的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)從遠(yuǎn)程下載文件的方法,涉及php操作文件的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-03-03
  • 如何從防護(hù)角度看Thinkphp歷史漏洞

    如何從防護(hù)角度看Thinkphp歷史漏洞

    19年初,網(wǎng)上公開了2個Thinkphp5的RCE漏洞,漏洞非常好用,導(dǎo)致有很多攻擊者用掃描器進(jìn)行全網(wǎng)掃描。我們通過ips設(shè)備持續(xù)觀察到大量利用這幾個漏洞進(jìn)行批量getshell的攻擊流量,本文主要從流量角度簡要分析和利用thinkphp進(jìn)行攻擊的全網(wǎng)掃描和getshell流量痕跡。
    2021-05-05
  • php 使用file_get_contents讀取大文件的方法

    php 使用file_get_contents讀取大文件的方法

    本文介紹了在php中使用file_get_contents函數(shù)讀取大文件的方法,并附上了示例以及使用小技巧,非常的實(shí)用,這里推薦給大家
    2014-11-11
  • PHP 向右側(cè)拉菜單實(shí)現(xiàn)代碼,測試使用中

    PHP 向右側(cè)拉菜單實(shí)現(xiàn)代碼,測試使用中

    PHP 向右側(cè)拉菜單實(shí)現(xiàn)代碼,測試使用中,需要的朋友可以測試下。
    2009-11-11
  • golang、python、php、c++、c、java、Nodejs性能對比

    golang、python、php、c++、c、java、Nodejs性能對比

    這篇文章主要介紹了golang、python、php、c++、c、java、Nodejs性能對比的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • PHP結(jié)合Redis+MySQL實(shí)現(xiàn)冷熱數(shù)據(jù)交換應(yīng)用案例詳解

    PHP結(jié)合Redis+MySQL實(shí)現(xiàn)冷熱數(shù)據(jù)交換應(yīng)用案例詳解

    這篇文章主要介紹了PHP結(jié)合Redis+MySQL實(shí)現(xiàn)冷熱數(shù)據(jù)交換應(yīng)用案例,結(jié)合具體實(shí)例形式詳細(xì)分析了Redis+MySQL冷熱數(shù)據(jù)交換原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07

最新評論