本篇文章由php7教程栏目给大家介绍一下关于 php7 使用preg_replace出错的问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
问题描述:
PHP7废弃了preg_replace?
原本是中php5中处理url中后面参数替换清除的,代码如下
$url = preg_replace('/([?&])src=[^&]+(&?)/e', '"$2"==""?"":"$1"', $url);但是到php7中就报错了
立即学习“PHP免费学习笔记(深入)”;
Avgrund是一款效果不错的弹出层插件,层弹出的同时页面模糊并后退,弹出的层支持按ESC关闭和点击背景关闭,只需简单地在页面中引入Avgrund相关文件就可以使用了。
需要用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);










