千家信息网

PHP7 preg_replace出错怎么解决

发表于:2024-10-10 作者:千家信息网编辑
千家信息网最后更新 2024年10月10日,这篇文章主要讲解了"PHP7 preg_replace出错怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP7 preg_replace出错
千家信息网最后更新 2024年10月10日PHP7 preg_replace出错怎么解决

这篇文章主要讲解了"PHP7 preg_replace出错怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP7 preg_replace出错怎么解决"吧!

问题描述:

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出错怎么解决"的内容了,经过本文的学习后,相信大家对PHP7 preg_replace出错怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

代码 参数 问题 内容 函数 学习 知识 知识点 适当 安全 一句话 下标 原因 原本 后门 就是 思路 情况 手机 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河北信息化软件开发过程有哪些 网络安全信息化领导讲话 网校软件开发售卖 软件开发最基本 百度未连上服务器怎么办 什么是机器人编程软件开发 软件开发公司部门 网络安全学习会议记录 石家庄什么信软件开发 北京服务器优缺点 绝对求生服务器 互联网科技公司的年度总结 吕梁政务软件开发价格 电视视频软件开发 sql学习指南 数据库 校园网络安全宣传视频创意短片 表单提交是到数据库庅 云计算研究生和网络安全哪个好 网络安全管理总决赛 如何验证数据库补丁是否成功 网络安全考核细则自查报告 网络安全手抄报的句子 30字 新点软件开发考核题目 停车软件怎么找不到数据库 软件开发和芯片设计哪个好 腾讯服务器为什么不升级 系统数据处理软件开发 怀柔区网络营销网络技术口碑推荐 使用蓝牙耳机有网络安全隐患吗 无法验证服务器身份苹果11
0