当前位置: 首页 >> PHP

在php5.3版本中废弃了ereg_replace正则函数

来源 : 转载     时间 : 2017-01-14 13:46:34     浏览 :   

假如你经常使用php开源程序,在升级了php环境后,肯定遇到过,Deprecated: Function ereg_replace() 的错误信息。

在php5.3版本中,为了让编程更简洁,废弃了ereg_replace正则函数,但有些早期开发的php程序,这个函数经常使用,下面我有两个解决的方法:

1.把php版本更换至php5.0,继续使用早期版本的php环境,但这种方法未免有点不客观,假如你是购买的虚拟主机,你就没有办法更换php版本

2.修改php环境的配置文件,也就是修改php.ini文件:

 

找到 ;extension=php_mbstring.dll 更改为:extension=php_mbstring.dll

找到 ;mbstring.func_overload = 0 修改为:mbstring.func_overload = 7

这样也可以继续使用,但修改php.ini文件同第一种方法一样有限制,并不是所有的php运行环境你都有权修改


3.使用最新的正则函数 preg_replace,在正则替换时稍有不同,


在phpv5.3中,php推荐使用第3种方法,因为preg_replace要比ereg_replace执行的效率快很多。


相关拓展:php5.3新旧函数替换收集(ereg|eregi|ereg_replace|eregi_replace)

preg_match 用的是 PCRE(Perl 兼容的正则表达式语法):正则表达式的两端用一个符号做边界,如 “/pattern/” 或者 “#pattern#”

eregi 是乎略大小写的匹配,转换为 preg_match,第一个参数,用PCRE的参数来乎略大小写,如:”/pattern/i” 或者 “#pattern#i”两者的第三个参数返回的匹配的数据结构不同。

ereg 的第三个参数在调用结束后,返回的是一个字符串数组,分别为完整匹配字串和各个子匹配字串。

preg_match 返回的是二维数组,相当于 ereg 的字串数组中的字串在 preg_match 是一个数组,分别保存匹配值以及匹配位置。

如果要进行多次匹配,PHP 提供了 preg_match_all 函数,其第三个参数的返回值则是一个三维数组

ereg_replace, eregi_replace 函数用 preg_replace 函数或者 str_replace 函数来替代,和前面的 ereg 替换为 preg_match 类似,第一个参数要进行转换,头尾增加一个符号,如:”/pattern/” 或者 “#pattern#”

eregi_replace 到 preg_replace 的替换,在第一个参数的后面增加正则表达式参数。如:”/pattern/i” 或者 “#pattern#i”

如果 ereg_replace 的第一个参数不是正则表达式,可以用 str_replace 直接来替换。


石家庄捷搜网络致力于织梦CMS网站建设,模板制作,系统二次开发服务。

如果有织梦CMS系统相关需求的可以联系我们。

客服微信:13832394380

  • 联系我们

  • 邮箱:794421925@qq.com
  • 电话:13832394380
  • Q Q:794421925 点击交谈
  • 地址:石家庄市南二环西路31号昊邦大厦A1602

Copyright © 2008-2021 石家庄捷搜网络科技有限公司 版权所有 备案号:冀ICP备16025780号-1