自己目前在从事PHP程序员,网站方向的.之前遇到不少PHP的函数被弃用了,主要是PHP版本问题(PHP5.3.x),为了更好的向 PHP 的未来版本(PHP6) 过渡,将未来不再支持的函数标记为 DEPRECATED.在代码中使用这些函数,将毫不留情的在页面中显示警告信息:"使用了过时的函数…",这些配置将在 PHP6中不再存在,相关功能也将关闭
下面列举了部分被弃用的函数:
call_user_method()(使用
call_user_func() 替代)
call_user_method_array() (使用
call_user_func_array() 替代)
define_syslog_variables()
dl()
ereg() (使用
preg_match() 替代)
ereg_replace() (使用
preg_replace() 替代)
eregi() (使用
preg_match() 配合 ‘i’ 修正符替代)
eregi_replace() (使用
preg_replace() 配合 ‘i’ 修正符替代)
set_magic_quotes_runtime() 以及它的别名函数
magic_quotes_runtime()
[color=olive]session_register() (使用
$_SESSION 超全部变量替代)
session_unregister() (使用
$_SESSION 超全部变量替代)
session_is_registered() (使用
$_SESSION 超全部变量替代)
set_socket_blocking() (使用
stream_set_blocking() 替代)
split() (使用
preg_split() 替代)
spliti() (使用
preg_split() 配合 ‘i’ 修正符替代)
sql_regcase()
mysql_db_query() (使用
mysql_select_db() 和
mysql_query() 替代)
mysql_escape_string() (使用
mysql_real_escape_string() 替代)
废弃以字符串传递区域设置名称. 使用
LC_* 系列常量替代.
mktime() 的
is_dst 参数. 使用新的时区处理函数替代.
涉及到的主要的函数迁移如下:
删除函数 define_syslog_variables 引用删除对函数 define_syslog_variables 的引用将变量 $LOG_ERR, $LOG_USER 等用常量 LOG_USER, LOG_USER, … 替代
ereg, eregi 函数用
preg_match 函数替代这几个函数的函数声明int ereg ( string$pattern , string $string [, array &$regs ] ) int eregi ( string $pattern , string $string [, array &$regs ] ) intpreg_match ( string $pattern , string $subject [, array &$matches [, int $flags [, int $offset ]]] )虽然三者的第一个参数都是字符串,表示一个正则表达式,但是 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 直接来替换。
spliti 函数用
explode 或则
preg_split 函数替代split 切分字符串,
如果无须用到正则表达式,使用 explode 替换是最好不过,速度最快.对于使用正则表达式切分字串,则使用 preg_split 函数替代。替代过程和 ereg/ereg_replace 类似,只是在第一个正则表达式参数中做文章,将 split 的正则表达式前后加上一个 PCRE 的分隔符号。
分享到:
相关推荐
总之,`Function ereg() is deprecated Error`的出现是由于PHP 5.3及更高版本不再支持`ereg()`函数。开发者应当将所有`ereg()`实例替换为`preg_match()`,并确保正确地编写和转义正则表达式。这样做不仅解决了错误...
当PHP环境从较低版本升级到5.3及以上时,可能会遇到一些由于函数废弃而导致的错误,比如`ereg()`和`ereg_replace()`。这两个函数在PHP 5.3版本中被标记为过时(deprecated),并推荐使用`preg_match()`和`preg_...
这两个函数用于魔术引号处理,PHP5.3之后不再支持,建议使用其他方式处理数据。 6. **session_register()**, **session_unregister()**, 和 **session_is_registered()**: 这些函数用于在旧版PHP中注册会话变量...
2. `eregi()`:与`ereg()`类似,`eregi()`是不区分大小写的正则表达式匹配函数。在PHP 5.3中,可以使用`preg_match()`配合`i`标志来实现相同的功能,如`preg_match("/^(style|style_)(.*)*/i", $file)`。 3. `ereg_...
此外,除了`eregi`之外,还有其他一些与正则表达式相关的函数在PHP 5.3之后也被弃用,包括`ereg_replace`、`eregi_replace`、`split`和`spliti`等。这些函数被对应的`preg_replace`和`preg_split`等函数取代。例如,...
9.2.1 ereg 和eregi 131 9.2.2 ereg_replace 和eregi_replace 132 9.2.3 Split 133 9.3 PERL风格函数 134 9.3.1 模式定界符 134 9.3.2 模式选项 135 9.3.3 PERL风格转义字符 136 9.3.4 扩展模式记号 136 9.3.5 preg_...
PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是浮点数。你可以...