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版本出來(lái)了,我裝了一下改動(dòng)還真不小,咱們用的smarty居然不兼容了,一運(yùn)行出現(xiàn)以下錯(cuò)誤:
preg_replace():
 

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

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

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

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