PHP 5.3 与老版本函数差异总结
1:Function ereg() is deprecated Error 错误对策
Deprecated: Function ereg() is deprecated in ……
解决方法一: 退回去用php5.2。
解决方法二:继续用php5.3,但是修改devel/devel.modul的460行: if ($errno & (E_ALL ^ E_NOTICE)) { 改为 if ($errno & (E_ALL & ~E_NOTICE & ~E_DEPRECATED)) { 把deprecated错误给忽略掉)
解决方法三:把ereg换成preg_match,ereg_replace也需得换成preg_replace。
只得注意的是 ereg(’^[0-9]‘ 需修改成 preg_match(’/^[0-9]/‘
2: PHP5.3后(set_magic_quotes_runtime(),ereg() )已经关闭
运行php程序出现以下错误
Deprecated: Function set_magic_quotes_runtime() is deprecated
导致这个提示的原因是在PHP5.3后此特性(set_magic_quotes_runtime())已经关闭。
而且在PHP6中已经完全移除此特性。
你可以注释或者删除掉出错的行,或者是在set_magic_quotes_runtime()前面加@符号。
PHP 5.3 ereg() 无法正常使用,提示“Function ereg() is deprecated Error”。问题根源是php中有两种正则表示方法,一个是posix,一个是perl,php6打算废除posix的正则表示方法所以后来就加了个 preg_match。此问题解决办法很简单,在ereg前加个过滤提示信息符号即可:把ereg()变成@ereg()。这样屏蔽了提示信息,但根本问 题还是没有解决,php在5.2版本以前ereg都使用正常,在5.3以后,就要用preg_match来代替ereg。所以就需要变成这样,原来:
ereg(“^[0-9]*$”,$page)
变成:
preg_match(“/^[0-9]*$/”,$page)
特别提醒:posix与perl的很明显的表达区别就是是否加斜杠,所以与ereg相比,后者在正则的前后分别增加了两个”/”符号,不能缺少。
Tips:此问题在php5.2之前版本不会出现。
Function ereg() is deprecated in drupal-6.15\includes\file.inc on line 904
open the file.inc in a good text editor other than notepad, go to the line number 904 to see the following line. Then comment the line and in the next line type the replaced code. this will solve the instalation issues and also most of other issues related to the same issue.
Change
elseif ($depth >= $min_depth && ereg($mask, $file)) {
to
elseif ($depth >= $min_depth && mb_ereg($mask, $file)) {
mb_ereg fortunatly is not deprecated