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版本下, 已经不允许使用 =& 这种方式来引用调用了, 解决方法很简单, 就是直接把 & 去掉即可;