27
4006-5666-83
当前位置:首页 > 资讯 > 建站知识

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

2014-05-29 酷站科技
如今PHP5.5版本号出来,我装了一下修改还真很大,我们用的smarty竟然兼容问题了,一运作出現下列不正确:
preg_replace():
 

意思是怎么用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('\0', "n")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"
, $source_content);

换成:

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

就可以,那样就可以极致适配php5.5了。

文中公布于酷站科技 网站制作企业
来源于申明:以上内容一部分(包括照片、文本)来自互联网,若有侵权行为,请立即与本网站联络(010-57218159)。
如没特殊注明,文章均为酷站科技原创,转载请注明来自http://www.bjkuzhan.com/jianzhanzhishi/3228.html
联系专业的商务顾问,制定方案,专业设计,一对一咨询及其报价详情
服务热线服务热线 4006-5666-83
联系我们 contact us
4006-5666-83
400-6566-683 — 海淀营业部
400-6566-683 — 昌平营业部
+

酷站科技为你提供上门/网站策略方案

留下联系方式,我们将会在一个工作日内与你联系

隐私条款信息保护中,请放心填写