smarty如何完美兼容php5.5和preg_replace_callback如何替換preg_replace
  • 更新時(shí)間:2024-11-08 02:58:28
  • 網(wǎng)站建設(shè)
  • 發(fā)布時(shí)間:1年前
  • 254

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

preg_replace():

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

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

在Smarty_Compiler 類中添加一個(gè)方法:

函數(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)容);

用。來(lái)代替:

$source_content=preg_replace_callback($search,

array('self','callback_source')

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

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

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

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

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

在線客服

掃碼聯(lián)系客服

3985758

回到頂部