PHP5.2下preg_replace函數(shù)的問題
preg_replace 使用的超過了php5.2默認允許的字節(jié),也就是pcre.backtrack_limit和pcre.recursion_limit的大小的問題。
Discuz!6.0.0正式版程序發(fā)布以來,大家都熱火朝天的升級中,但是部分插件在6.0下出現(xiàn)了問題
比如http://www.discuz.net/viewthread.php?tid=559133這個銀行插件
在php為5.2.0及以上的環(huán)境下安裝以后會出現(xiàn)白屏的問題
從Discuz!用戶的角度考慮,我們需要去協(xié)助插件作者解決這個問題
下面說下我的解決過程,希望能給大家一些建議吧
第一:此插件在5.5的情況下可以正常運行,但是6.0下就白屏了
Discuz!6.0為了增加模板緩存文件的可讀性,增加了緩存文件的縮進,而確實修改過部分templates.func.php的模板處理部分,
莫非是這個原因?開始我初步確定是這里的問題,因為用5.5的部分代碼替換修改過的代碼,就表現(xiàn)正常,但是很郁悶的沒有找到原因
第二步:懷疑是bank.htm這個模板書寫格式的問題,于是我很郁悶的開始分析模板,說實話,模板大了分析起來真的很頭疼。結(jié)果顯然又沒有找到原因。比較郁悶的說
第二步:然后發(fā)現(xiàn)將此模板拆分以后,就正常執(zhí)行了,這時候我初步懷疑是不是正則匹配的bug在大數(shù)據(jù)量的時候出現(xiàn)了錯誤,于是我就上bugs.php.net開始搜索了http://bugs.php.net/search.php?c … ace&x=3&y=5在這里找啊找啊找,于是終于找到了這里http://bugs.php.net/bug.php?id=39405,突然間發(fā)現(xiàn)居然是5.2配置的問題,在調(diào)整大pcre.backtrack_limit和pcre.recursion_limit之后問題解決
據(jù)說將pcre.backtrack_limit=-1 in php.ini
就是無限制
之所以寫這么詳細就是想一起分享下我解決問題的思路:)
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- PHP正則替換函數(shù)preg_replace和preg_replace_callback使用總結(jié)
- php正則之函數(shù) preg_replace()參數(shù)說明
- PHP 正則表達式之正則處理函數(shù)小結(jié)(preg_match,preg_match_all,preg_replace,preg_split)
- php中preg_replace_callback函數(shù)簡單用法示例
- php中使用preg_replace函數(shù)匹配圖片并加上鏈接的方法
- php正則preg_replace_callback函數(shù)用法實例
- PHP正則替換函數(shù)preg_replace()報錯:Notice Use of undefined constant的解決方法分析
- PHP中一個有趣的preg_replace函數(shù)詳解
相關(guān)文章
PHP var_dump遍歷對象屬性的函數(shù)與應用代碼
var_dump此函數(shù)顯示關(guān)于一個或多個表達式的結(jié)構(gòu)信息,包括表達式的類型與值。數(shù)組將遞歸展開值,通過縮進顯示其結(jié)構(gòu)。2010-06-06
用PHP ob_start()控制瀏覽器cache、生成html實現(xiàn)代碼
Output Control 函數(shù)可以讓你自由控制腳本中數(shù)據(jù)的輸出。它非常地有用,特別是對于:當你想在數(shù)據(jù)已經(jīng)輸出后,再輸出文件頭的情況。2010-02-02
php將mysql數(shù)據(jù)庫整庫導出生成sql文件的具體實現(xiàn)
下面是php將mysql數(shù)據(jù)庫整庫導出生成sql文件的詳細代碼,希望對大家在用php編程時備份數(shù)據(jù)有一定幫助2014-01-01
淺析php如何實現(xiàn)爬取數(shù)據(jù)原理
在本篇文章中,小編給大家分享了關(guān)于php如何實現(xiàn)爬取數(shù)據(jù)的原理知識點,有興趣的朋友們參考下。2018-09-09

