永发信息网

PHP 类Smarty_Compiler.class.php中有一句话报错了,要怎么改?

答案:3  悬赏:40  手机版
解决时间 2021-01-23 18:27
PHP 类Smarty_Compiler.class.php中有一句话报错了,要怎么改?
最佳答案
preg_replace函数仍然可以使用,你这里出错是因为你的旧的php版本在使用preg_replace时,其第一个参数,即$pattern,使用/e修饰符,而php在5.5.0版本以后preg_repalce函数已经废弃使用/e修饰符,如果使用/e修饰符的话,就会报一个E_DEPRECATED级别的错误。
你贴出来的代码,第一个参数$search.'e',明显使用了/e修饰符,你这里有2个选择,一个是根据提示,使用preg_replace_callback替换preg_replace,另外一个最简单也是大多数情况下的方法就是将将你的第一个参数直接写成$search,不要.'e'这个操作。追问我可不敢贸然把这个e去掉,但是我也不 理解这个e是干嘛用的追答如下为preg_replace函数的原型,mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1[, int &$count ]] )
当使用/e修饰符时,preg_replace会将第2个参数$replacement 返回的字符串当做一个php代码来执行。比如说$replacement 为$_POST['na'];而$_POST['n']返回的值为phpinfo(),那么$replacement 最终的字符串就是执行phpinfo()函数返回的字符串;
你要确保这里的preg_replace的第二个参数,即"'"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"字符串不是类似phpinfo()这样的一个可执行的php的代码的话,你可以先echo 这个字符串(第二个参数),看一下是否是可执行的php代码,如果不是,则可以直接将.'e'去掉。
全部回答
没错啊,可能是你的边界符没写全造成的。追问先前是没报错,我升级PHP版本后才报的错,报错时建议用preg_replace_callback代替,如果用preg_replace_allback要怎么改啊?
你的模板文件语法有错误追问有语法问题的话旧版就会报错了,这是升级PHP后才有的问题。我很确定模板文件不存在语法问题追答报错内容贴出来追问"Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback() instead in...."
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东北话“嘎啵旋”(不知道是不是这么写的)是
我国国土面积广大,各地建筑物风格各异,下面
钓青鱼用那家药酒泡的锅牛螺丝好?
井冈山市图书馆地址好找么,我有些事要过去,
齐邦月嫂母婴社区服务中心地址好找么,我有些
安福图书馆地址好找么,我有些事要过去,
厦门洁万家服务有限公司地址有知道的么?有点
法语“Parlez
郭伋夜宿野亭阅读答案
夏天来大姨妈能不能喝常温的牛奶
完形填空Howdoyouusuallyhaveyourartlesson
巧稚月嫂服务中心地址好找么,我有些事要过去
炉瓶三事出自红楼梦吗
赤竹村这个地址在什么地方,我要处理点事
冉姐家政服务有限公司地址好找么,我有些事要
推荐资讯
“有些时候文明只是十公分的宽度,有些时候只
搬入二手房注意事项
单选题函数y=2x3-3x2A.在x=0处取得极大值0
长宁车站有没有到重庆机场的大巴车
下列标点符号使用有错误的一项是 A.“唉!
雪莲生态保养地址在哪,我要去那里办事
同心县万家乐瓷砖大全地址在什么地方,想过去
在如图所示由火柴棒拼出的一系列图形中,第n
CaffeMaryling(海岸城店)地址有知道的么?有
凤潮纯k量贩式KTV地址在什么地方,想过去办事
主题词加权是什么意思
— teaches you English? —Mr Wang. A. When
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?