smarty如何完美兼容php5.5和preg_replace_callback如何替換preg_replace
  • 更新時間:2025-01-19 22:28:03
  • 網站建設
  • 發(fā)布時間:2年前
  • 297

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

preg_replace():

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

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

在Smarty_Compiler 類中添加一個方法:

函數回調源($匹配){

返回''.$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)

.'''

, $源內容);

用。來代替:

$source_content=preg_replace_callback($search,

array('self','callback_source')

, $源內容);

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

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

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

本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/web/12822.html

在線客服

掃碼聯系客服

3985758

回到頂部