Jtti广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP7 preg_replace 出错及解决办法
  • 397
分享到

PHP7 preg_replace 出错及解决办法

PHP7preg_replace 2015-08-23 05:08:02 397人浏览 才女
摘要

问题描述: PHP7废弃了preg_replace? 原本是中php5中处理url中后面参数替换清除的,代码如下 $url = preg_replace('/([?&])src=[^&]+(&?)

问题描述:

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 使用出错内容请搜索编程界以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程界!

--结束END--

本文标题: PHP7 preg_replace 出错及解决办法

本文链接: https://www.lsjlt.com/news/39.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php7 curl怎么开启
    小编给大家分享一下php7 curl怎么开启,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php7 curl开启的方法:首先在php.ini中查找“extension=curl”;然后将其前面的分号去掉;接着找到对应php...
    905
    2023-09-29
  • php7怎么写框架
    本篇内容主要讲解“php7怎么写框架”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php7怎么写框架”吧!1、路由路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持...
    658
    2023-09-29
  • php7如何禁止缓存
    这篇文章主要介绍了php7如何禁止缓存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php7禁止缓存的方法:1、找到安装目录下的php.ini文件;2、修改“opcache....
    531
    2023-09-29
  • CentOS7安装PHP7的方法
    这篇文章将为大家详细讲解有关CentOS7安装PHP7的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。CentOS7的默认PHP版本是PHP5,但是如果我们要安装PHP7,不需要将现有的PHP5删除,...
    224
    2023-09-29
  • php7安装mysqli实例讲解
    本文操作环境:Windows7系统、php-7.1.5、Dell G3。 php7 怎么安装mysqli? centos php7 安装mysqli扩展心得 在新配服务器时发...
    661
    2023-09-29
    php7 mysqli
  • 如何安装PHP7 lamp
    在开发 web 应用程序时,经常会用到一个被称为 LAMP 的软件堆叠。LAMP 代表 Linux、Apache、MySQL 和 PHP。其中,PHP 是一种流行的服务器端脚本语言,而 LAMP 环境能够提供一个完整的 web 开发环境。本...
    868
    2023-09-29
  • php7 字符串 转义
    在PHP编程中,字符串是常见的数据类型之一。我们经常需要进行字符串的转义操作,以确保代码能够正常地运行并避免潜在的安全风险。随着PHP版本的不断更新,字符串转义也有了一些变化。本文将介绍PHP7中的字符串转义操作。一、转义字符在PHP中,转...
    685
    2023-09-29
  • php7安装opcache的方法
    本文将为大家详细介绍“php7安装opcache的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php7安装opcache的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去...
    843
    2023-09-29
  • PHP7语言基础示例分析
    这篇文章主要介绍了PHP7语言基础示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。文章目录PHP标记PHP指令分隔符PHP注释常量PHP变量数据类型转换为布尔值转换为整...
    185
    2023-09-29
  • php7怎么安装kafka扩展
    这篇文章将为大家详细讲解有关php7怎么安装kafka扩展,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装librdkafka# cd /usr/local/src/# ...
    697
    2023-09-29
  • php7扩展类怎么实现
    小编给大家分享一下php7扩展类怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在php7中,有许许多多的扩展类,今天我们就以person类为例实现doin...
    946
    2023-09-29
  • php7中如何创建扩展
    这篇文章将为大家详细讲解有关php7中如何创建扩展,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将实现如下功能:<phpecho say();>输出内容:$ ...
    515
    2023-09-29
  • PHP7性能优化如何提升
    这篇文章主要介绍“PHP7性能优化如何提升”,在日常操作中,相信很多人在PHP7性能优化如何提升问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP7性能优化如何提升”的疑惑有所帮助!接下来,请跟着小编一起来...
    955
    2023-09-29
  • mac如何编译安装 php7
    这篇文章主要介绍mac如何编译安装 php7,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mac编译安装php7的方法:1、通过“wget -c http://mirrors.sohu.com/php/php-7.1...
    656
    2023-09-29
  • macOS PHP7怎么增加Xdebug
    本篇内容主要讲解“macOS PHP7怎么增加Xdebug”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“macOS PHP7怎么增加Xdebug”吧!macOS系统PHP7增加XdebugApp...
    844
    2023-09-29
  • 怎么使用PHP7的期望
    这篇文章给大家分享的是有关怎么使用PHP7的期望的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php7期望是向后兼容的增强到旧 assert()函数。期望允许在生产代码零成本的断言,并提供在断言失败时抛出自定义异...
    869
    2023-09-29
  • php7怎么安装mysql扩展
    这篇文章主要介绍了php7怎么安装mysql扩展,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php7安装mysql扩展的方法:首先在php网站上下载mysql扩展;然后解压...
    892
    2023-09-29
  • 怎么使用PHP7的Yaconf
    这篇文章主要介绍怎么使用PHP7的Yaconf,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简介我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各...
    893
    2023-09-29
  • php7怎么安装event扩展
    这篇文章主要介绍php7怎么安装event扩展,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php7下安装event扩展有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施...
    852
    2023-09-29
  • centos yum怎么安装php7
    本篇内容介绍了“centos yum怎么安装php7”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!centos yum安装php7的方法:首...
    454
    2023-09-29
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作