亚洲a√-youjizzxxxxx-av一道本-欧洲av在线播放-奇米影视777四色-av成人天堂-色婷婷777777仙踪林-日韩在线观看免费网站-亚洲天堂视频一区-亚洲精品极品-91丝袜呻吟高潮美腿白嫩

首頁 > 新聞 > 知識賦能

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

2014-05-29 5586
分享至:
現在PHP5.5版本出來了,我裝了一下改動還真不小,咱們用的smarty居然不兼容了,一運行出現以下錯誤:
 

意思是說用preg_replace_callback來代替preg_replace里的/e參數,可能是因為安全性的考慮,在php5.5中把這個參數取消了,但是這個preg_replace_callback函數用起來不順手,我就把那個Smarty_Compiler.class.php文件里的第270行里的preg_replace($search.'e'里的e去掉了,果然好了,可是問題又出來了,這個問題出來的幾率不多,就是無法在smarty模板里寫入php標簽代碼:{php}{/php}。

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

在Smarty_Compiler這個類里加入一個方法:

function callback_source($matches){
return "".$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('', "n")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"
, $source_content);

替換成:

$source_content = preg_replace_callback($search,
array("self","callback_source")
, $source_content);

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

本文發布于尚品中國 網站制作公司
來源聲明:

本文章系尚品中國編輯原創或采編整理,如需轉載請注明來自尚品中國。以上內容部分(包含圖片、文字)來源于網絡,如有侵權,請及時與本站聯系(010-60259772)。

立即預約專屬顧問 開啟數字化轉型之旅!

10年+資深項目經理1V1服務 | 行業定制化方案 | 精準報價體系
獲取策劃方案
立即預約專屬顧問 開啟數字化轉型之旅!

咨詢我們,獲得專業的服務和報價

聯系我們,免費獲取項目方案及報價,或只是聊一聊您的項目? 在收到您的需求留言后我們將由專業人員于24小時內與您取得聯系,請您保持電話暢通!

  • 科研院所解決方案
  • 外貿出海解決方案
  • 協會學會解決方案
  • 集團上市公司解決方案
  • 生物醫藥解決方案
  • 制造業解決方案
  • 高校教育解決方案
  • 信創網站改造解決方案
更多服務咨詢,請聯系尚品

010-60259772

您的姓名 *
您的電話 *
您的郵箱
公司名稱 *