PHP7 preg_replace出错及解决办法
2022-11-15 canyinms.com 【 字体:大 中 小 】
PHP7废弃了preg_replace?
原本是中php5中处理url中后面参数替换清除的,代码如下
$url = preg_replace('/([?&])src=[^&]+(&?)/e', '"$2"==""?"":"$1"', $url);
但是到php7中就报错了
需要用preg_replace_callback来替换,请问该咋办?
相关代码
$url = preg_replace('/([?&])src=[^&]+(&?)/e', '"$2"==""?"":"$1"', $url);问题分析:
e修饰符因为存在安全隐患 自 5.3 开始就已经标记为了待移除的内容。
转而接替的是 preg_replace_callback,此方法第二个参数为一个回调函数,回调函数会自动传入比配的分组作为参数。在回调函数内部通过数组下标访问匹配组。
preg_replace_callback('/([?&])src=[^&]+(&?)/', function($matches){ return $matches[2]==""?"":$matches[1]; }, $url);
知识点扩展:
PHP7已经删除了preg_replace的e修饰符
官网提示是这样的,对/e修饰符的支持已删除。请改用preg_replace_callback()
原因是/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后),会被一句话后门使用
看看smarty中是也是这样用的,也是存在问题
$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); 可以把smarty模板修改成这个 $source_content = preg_replace_callback($search, function ($matches){ $str=""; $str.=$this->_quote_replace($this->left_delimiter) . 'php'; $str.=str_repeat("\\n\\", substr_count($matches[1], "\\n\\")); $str.=$this->_quote_replace($this->right_delimiter); return $str; }, $source_content);
到此这篇关于PHP7 preg_replace 出错及解决办法的文章就介绍到这了,希望大家以后多多支持好二三四!
![](/kaifadou/static/images/ndArrow.png)
猜你喜欢
![2023年高考需注意这些事项 注意事项有哪些?](/kaifadou/static/images/default.jpg)
2023年高考需注意这些事项 注意事项有哪些?
![](/kaifadou/static/images/watch.png)
![2023年高考时间是几月几日 全国高考什么时候?](/kaifadou/static/images/default.jpg)
2023年高考时间是几月几日 全国高考什么时候?
![](/kaifadou/static/images/watch.png)
![高考倒计时1天 几号开始高考?](/kaifadou/static/images/default.jpg)
高考倒计时1天 几号开始高考?
![](/kaifadou/static/images/watch.png)
![晋江8个考点实行交通管制 此举有何意义?](/kaifadou/static/images/default.jpg)
晋江8个考点实行交通管制 此举有何意义?
![](/kaifadou/static/images/watch.png)
![高考生哪六样东西千万别发朋友圈?](/kaifadou/static/images/default.jpg)
高考生哪六样东西千万别发朋友圈?
![](/kaifadou/static/images/watch.png)
![黑龙江高考2023时间安排表 黑龙江高考是全国几卷?](/kaifadou/static/images/default.jpg)
黑龙江高考2023时间安排表 黑龙江高考是全国几卷?
![](/kaifadou/static/images/watch.png)
![《教育资源免费送!开学季大放送》](/kaifadou/static/images/default.jpg)
《教育资源免费送!开学季大放送》
![](/kaifadou/static/images/watch.png)
![小学教育,如何激发孩子学习兴趣?](/kaifadou/static/images/default.jpg)
小学教育,如何激发孩子学习兴趣?
![](/kaifadou/static/images/watch.png)
![了解最新职业培训趋势,掌握未来就业机会!](/kaifadou/static/images/default.jpg)
了解最新职业培训趋势,掌握未来就业机会!
![](/kaifadou/static/images/watch.png)
![教如何填报高考志愿](/kaifadou/static/images/default.jpg)
教如何填报高考志愿
![](/kaifadou/static/images/watch.png)
![](/kaifadou/static/images/info2.png)
橘子洲旅游攻略 长沙橘子洲怎么玩
![橘子洲旅游攻略 长沙橘子洲怎么玩](http://img.canyinms.com/d/file/kaifadou/202306/iDRuCCElQTQT5R0D16G7pyQl.jpg)
![](/kaifadou/static/images/info2.png)
西安周边旅游攻略 西安周边最值得去的地方
![西安周边旅游攻略 西安周边最值得去的地方](http://img.canyinms.com/d/file/kaifadou/202306/bJIckAADsjWONJxeP4iaoV9I.jpg)
![](/kaifadou/static/images/info2.png)
毛坦厂中学万人雨中送考 毛坦厂送考头车车牌91666祝福考生
![毛坦厂中学万人雨中送考 毛坦厂送考头车车牌91666祝福考生](http://img.canyinms.com/d/file/kaifadou/202306/StnQo5k4LbHx87MwoFLlDkl9.jpg)
![](/kaifadou/static/images/info2.png)
珠峰被救女子不愿支付全部救援费用 珠峰攀登者为救遇险女子放弃登顶
![珠峰被救女子不愿支付全部救援费用 珠峰攀登者为救遇险女子放弃登顶](http://img.canyinms.com/d/file/kaifadou/202306/LyrjjE43gbmJ2mRJljPvQ4TF.jpg)
![](/kaifadou/static/images/info2.png)
登珠峰获救女子只愿承担4成救援费是怎么回事 登珠峰获救女子只愿承担4成救援费具体情况
![登珠峰获救女子只愿承担4成救援费是怎么回事 登珠峰获救女子只愿承担4成救援费具体情况](http://img.canyinms.com/d/file/kaifadou/202306/nu.jpg)
![](/kaifadou/static/images/info2.png)
国内出现偏肺病毒感染 尚无治疗药物
![国内出现偏肺病毒感染 尚无治疗药物](http://img.canyinms.com/d/file/kaifadou/202306/8NtqOAbcYtwAhk1QwjQm9aCU.jpg)
![](/kaifadou/static/images/info2.png)
男子连吃100天麦当劳减重53斤是真的吗 男子连吃100天麦当劳为什么能减重53斤
![男子连吃100天麦当劳减重53斤是真的吗 男子连吃100天麦当劳为什么能减重53斤](http://img.canyinms.com/d/file/kaifadou/202306/nu.jpg)
![](/kaifadou/static/images/info2.png)
本周狗屎运最旺的星座 本周狗屎运最旺的四大星座
![本周狗屎运最旺的星座 本周狗屎运最旺的四大星座](http://img.canyinms.com/d/file/kaifadou/202306/ApIkZF2MROd7VmOECC5nf2el.jpg)
![](/kaifadou/static/images/info2.png)
印度耗资百亿卢比的大桥又塌了是什么情况 印度耗资百亿卢比的大桥又塌了是为什么
![印度耗资百亿卢比的大桥又塌了是什么情况 印度耗资百亿卢比的大桥又塌了是为什么](http://img.canyinms.com/d/file/kaifadou/202306/nu.jpg)
![](/kaifadou/static/images/info2.png)
一个村考出300多大学生6个北大 湖南一小村考上一本奖4000二本3000
![一个村考出300多大学生6个北大 湖南一小村考上一本奖4000二本3000](http://img.canyinms.com/d/file/kaifadou/202306/nu.jpg)