首页 > PHP > 程序在PHP 5.3版开始出现的“Deprecated: Function eregi() is deprecated in”Error问题解决办法
2012
04-29

程序在PHP 5.3版开始出现的“Deprecated: Function eregi() is deprecated in”Error问题解决办法

在php5.3环境下运行程序无法正常使用,提示“Deprecated: Function eregi() is deprecated in ……”或“Deprecated: Function ereg_replace() is deprecated in ……”。问题根源是php中有两种正则表示方法,一个是posix,一个是perl,php6打算废除posix的正则表示方法所以后来就加了个preg_match。从php5.3开始,以上的版本不支持 ereg() 函数,而是使用 preg_match() 函数;不支持 ereg_replace() 函数,而使用 preg_replace() 函数。

简单的解决方法是在 ereg 或 ereg_replace() 前加个过滤提示信息符号即可。如:把ereg()变成@ereg()。这样屏蔽了提示信息,但根本问题还是没有解决。

最好的解决方法是:将不支持的函数修改为支持的函数即可。
例如:
Deprecated: Function eregi() is deprecated in D:\www\oscommerce\catalog\includes\classes\language.php on line 87
那么,将87行的
if(eregi(‘^(‘ . $value . ‘)(;q=[0-9]\\.[0-9])?$’, $this->browser_languages[$i])
改为:
if(preg_match(‘/^(‘ . $value . ‘)(;q=[0-9]\\.[0-9])?$/i’, $this->browser_languages[$i])

再例如:
Deprecated: Function ereg_replace() is deprecated in C:\wamp\www\includes\functions\general.php on line 61
那么,将61行的
$string = ereg_replace(‘ +’, ‘ ‘, trim($string));
改为:
$string = preg_replace(‘{ +}’, ‘ ‘, trim($string));

如此类推,其它类似的错误也可以按照上面两个函数的语法来做修改。

特别提醒:posix与perl的很明显的表达区别就是是否加斜杠,所以与ereg相比,后者在正则的前后分别增加了两个”/”符号,不能缺少。

最后编辑:
作者:耗子
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。

*

code