当前位置: 首页 >> PHP
 
 

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

来源:     时间:2017-01-14     浏览:  

假如你经常使用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 直接来替换。


 
  • 联系我们

  • 邮箱:794421925@qq.com
  • 电话:13832367531
  • Q Q:794421925 点击交谈
  • 地址:石家庄市桥西区芳馨家园六号楼底商
  • 淘宝店铺金翼网络淘宝店铺

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