Deprecated: Function ereg() is deprecated in 解决方案

在php5.3环境下安装或者运行oscommerce或者zen cart 程序时, 往往会出现如下所示的警告提示(以zen cart为例):

Deprecated: Function ereg() is deprecated in /var/www/zentest/includes/classes/db/mysql/query_factory.php on line 177

出现这种提示的原因是由于php5.3以上的版本不支持ereg()函数, 解决方法也很简单, 就是找到可以达到同样功能的函数用来代替就可以了, 这个函数就是preg_match()函数, 当然还有其他类似的函数, 如同样不支持不支持ereg_replace()函数, 但是可以用preg_replace()函数来代替即可, 这样来看, 解决方法就很简单了, 只要找到对应的位置直接替换即可. 但是还有一个问题, 由于它用到正则表达式, 所以, 如果仅是这样替换的话, 就会出现如下的警告提示:

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /var/www/zentest/includes/classes/db/mysql/query_factory.php on line 177

意思就是说只有正则开头的符号, 但是没有结束的问题, 通过正则的用法可知, 正则开头是^, 结束是$, 所以为了解决这个问题, 需要做如下的调整, 还是以原来的177行处的函数应用为例:

            if (!preg_match('^[0-9]', $key)) {         //177行处
              $obj->fields[$key] = $value;
            }

改为

            if (!preg_match('/^[0-9]*$/', $key)) {    //177行处
              $obj->fields[$key] = $value;
            }

这样, 这个问题就可以圆满地得到解决了.

split() 在高版本的PHP(5.3)文件中并不被支持, 官方建议是使用preg_split(), 详情参考官方说明

 

Deprecated: Assigning the return value of new by reference is deprecated in


 出现这种提示也是由于PHP版本的问题, 在PHP5.3版本下, 已经不允许使用 =& 这种方式来引用调用了, 解决方法很简单, 就是直接把 & 去掉即可;

 


 

posted @ 2013-10-29 11:23  月影传说  阅读(2538)  评论(0)    收藏  举报