smarty如何完美兼容php5.5和preg_replace_callback如何替換preg_replace
  • 更新時間:2024-11-09 00:32:07
  • 網(wǎng)站建設(shè)
  • 發(fā)布時間:1年前
  • 255

現(xiàn)在PHP5.5版本出來了,我安裝了一下,變化真的不小。我們使用的聰明人實際上是不兼容的。當(dāng)我運行它時,出現(xiàn)以下錯誤:

preg_replace():

意思是用preg_replace_callback來替換preg_replace中的/e參數(shù)??赡苁浅鲇诎踩紤],在php5.5中取消了這個參數(shù),但是這個preg_replace_callback函數(shù)不好用,所以就用那個Smarty_Compiler.class。把php文件第270行$search.'e'中的preg_replace(e去掉,本來可以的,但是問題又出來了,這個問題出現(xiàn)的幾率不大,就是寫不出來smarty 模板中的php 標(biāo)記代碼:{php}{/php}。

無法用preg_replace_callback() 函數(shù)替換此preg_replace()。具體更換方法如下:

在Smarty_Compiler 類中添加一個方法:

函數(shù)回調(diào)源($匹配){

返回''.$this-_quote_replace($this-left_delimiter).'php'.str_repeat('n',substr_count('','n')).''.$this-_quote_replace($this-right_delimiter). '';

}

然后在270行附近找到:

$source_content=preg_replace($search.'e', '''

.$this-_quote_replace($this-left_delimiter) .'php'

.'' .str_repeat('n', substr_count('\0', 'n')) .''

.$this-_quote_replace($this-right_delimiter)

.'''

, $源內(nèi)容);

用。來代替:

$source_content=preg_replace_callback($search,

array('self','callback_source')

, $源內(nèi)容);

就這樣,這樣就可以完美兼容php5.5了。

本文發(fā)表于推來客網(wǎng)站制作公司

我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復(fù)、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網(wǎng),轉(zhuǎn)載請表明原文地址:https://www.tlkjt.com/web/12822.html
推薦文章

在線客服

掃碼聯(lián)系客服

3985758

回到頂部