`
我心旋律
  • 浏览: 34062 次
  • 性别: Icon_minigender_1
  • 来自: 浙江宁波
文章分类
社区版块
存档分类
最新评论

php5.3x不再支持ereg和eregi,解决办法

    博客分类:
  • php
阅读更多
自己目前在从事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 的分隔符号。
分享到:
评论

相关推荐

    php5.3提示Function ereg() is deprecated Error问题解决方法

    主要介绍了php5.3提示Function ereg() is deprecated Error问题解决方法,主要是由于php5.3对ereg()函数升级造成的,使用时只要对其规则和函数进行简单的修改即可,需要的朋友可以参考下

    php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错

     其原因在于:php5.3以上的版本不支持ereg()函数,而是使用preg_match()函数;不支持ereg_replace()函数,而使用preg_replace()函数。  解决方法:将不支持的函数修改为支持的函数即可。   例如  复制代码 ...

    email.class.php

    PHP 5.3 ereg() "Function ereg() is deprecated Error" ereg -> preg_match PHP 5.3 ereg_replace() "Function ereg_replace() is deprecated Error" ereg_replace -> preg_replace "Delimiter ...

    php7-ereg-shim:用于 eregi 函数的垫片

    PHP 7 Ereg 垫片可以包含在旧 PHP 5 项目中的简单垫片,以通过 preg 提供 ereg 功能。 使您升级到 PHP 7 的生活更加轻松。

    邮件发送smtp类ereg等函数替换版

    邮件发送smtp类ereg等函数替换版,适用php5.3以上环境

    php5.3 废弃函数小结

    在php5.3被放弃的函数有: ereg();//直接用mb_ereg代替,或是preg_match代替,但是匹配规则需要用/包括起来 eregi();//preg_match代替,在规则后加上i,如:preg_match(“/^(style|style_)(.*)*/i”, $file); ereg_...

    PHP5.3与5.5废弃与过期函数整理汇总

    很多PHP程序员都知道,从PHP5.3开始加入了一个新的报错级别DEPRECATED,即将废弃/过期。下面我们来一个个版本梳理一下。 在php5.3被放弃的函数有: call_user_method() //使用 call_user_func() 替代 call_user_...

    PHP100视频教程 16:PHP小偷程序原理和实例

    1、初识正则表达式 ^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+ 用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。2、正则表达式函数 ereg() eregi() ...

    PHP3程序设计

    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_...

    获取当前客户端操作系统和IP地址 PHP5 0以上版本适用

    PHP5.0以上版本不再支持ereg的函数,所以需要重新选取新的函数来进行采集,本代码解决了版本不适用的问题,高低版本都可以获取客户端的操作系统和IP地址。

    php中正则替换函数ereg_replace用法实例

    主要介绍了php中正则替换函数ereg_replace用法,以实例形式分析了ereg_replace函数进行正则替换时的用法,非常具有实用价值,需要的朋友可以参考下

    PHP100视频教程 16:PHP小偷程序原理和实例.rar

    2、正则表达式函数 ereg() eregi()  ereg(正则表达式, 内容, 返回的数组);  若省略参数返回的数组,找到则返回值为 True 否则 返回 False  ereg() 有区分大小写,eregi() 无区分大小写 3、file_get_contents ...

    PHP代码审计(含详细文件目录)

    12 X-Forwarded-For绕过指定IP地址.php 13 md5加密相等绕过.php 14 intval函数四舍五入.php 15 strpos数组绕过NULL与ereg正则%00截断.php 16 SQL注入or绕过.php 17 密码md5比较绕过.php 18 md5()函数===使用数组绕过...

    PHP下ereg实现匹配ip的正则

    PHP下ereg实现匹配ip的正则

    PHP基础教程 是一个比较有价值的PHP新手教程!

    PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数值 数值类型可以是整数或是浮点数。你可以...

    PHP常用函数手册大全

    x,X 输出十六进制整数,“x”使用小写字母,“X”使用大写字母 d 输出十进制整数 c 输出由整数ASCII代码说明的字符 s 输出字符串 f 输出浮点数 e 输出用科学计数法表示的浮点数 % 输出一个百分号 返回值:无 正规...

    文档管理系统(Document Manager) 4.1.gz

    -不要在PHP5.3崩溃,并使用error_reporting完全打开。 -替代ereg_replace preg_replace函数所停止使用已过时的函数在PHP -修正在目录扫描仪的bug(这个bug只显示一个PHP警告) -新增用户贡献的语言:es_es,ca...

    Java-PHP-C#

    简单化一点, 我们可以用 eregi()取代 ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围 "a-z" 和 "A-Z" – 只需要指定一个就可以了: ^[_a-z0-9-]+(\.[_a-z0-9-]+)*$ 后面的服务器名字也是一样,但要去掉...

Global site tag (gtag.js) - Google Analytics