Web Design
Mobile Internet
Brand Design
Innovative
News
Encyclopedias

smarty如何完美兼容php5.5和preg_replace_callback如何替換preg_replace

Date:2014-05-29 Aource:尚品中國(guó) Type:網(wǎng)站百科
Word Size:small  medium  big

現(xiàn)在PHP5.5版本出來了,我裝了一下改動(dòng)還真不小,咱們用的smarty居然不兼容了,一運(yùn)行出現(xiàn)以下錯(cuò)誤:
preg_replace():
 

意思是說用preg_replace_callback來代替preg_replace里的/e參數(shù),可能是因?yàn)榘踩缘目紤],在php5.5中把這個(gè)參數(shù)取消了,但是這個(gè)preg_replace_callback函數(shù)用起來不順手,我就把那個(gè)Smarty_Compiler.class.php文件里的第270行里的preg_replace($search.'e'里的e去掉了,果然好了,可是問題又出來了,這個(gè)問題出來的幾率不多,就是無法在smarty模板里寫入php標(biāo)簽代碼:{php}{/php}。

沒辦法還是要把這個(gè)preg_replace()用preg_replace_callback()函數(shù)來替換,具體替換方法如下:

在Smarty_Compiler這個(gè)類里加入一個(gè)方法:

function callback_source($matches){
return "".$this->_quote_replace($this->left_delimiter)."php".str_repeat("n",substr_count("