返回主页



狐说西游



掩码计算



分数引擎



蓍草算法



386YAO



15TO18



PHP手册



画二维码



共1页 第1页
PHP5.3.x闹的正则表达式ereg问题的解决

升级到PHP5.3.5了,连接数据库应该快了(起码是心理上的)


但是有个可恶的问题接踵而至,PHP从5.3开始不支持ereg系列正则表达式函数了。


不只我爱用ereg,连一些成品软件比如phpmyadmin等都用的,


看官方说明,说建议改成preg,但是Perl形式的表达式和POSIX的多少还是有些区别的,可不是直接查找替换那么简单。


 


于是想自己写几个函数吧,自动把表达式翻译过来再说,谁知 function ereg()定义时又出错,说重复定义了。


真是没有天理,你不用还不准我用,于是再度妥协,


定义了一系列m_ereg这样的函数,全部写到ereg.php中。


遇到不兼容的脚本,前面加上<? include("ereg.php");?> 后面查找替换ereg换成m_ereg  等就是了,起码减少点工作量。


ereg.php的全文如下:


<?

function chgreg($reg)

  {

    $nreg=str_replace("/","\\/",$reg);

   

    return "/".$nreg."/";

  }


function m_ereg($reg,$p)

   {

    return preg_match(chgreg($reg),$p);

   }




function m_eregi($reg,$p)

 {$nreg=chgreg($reg)."i";

 

  return preg_match(chgreg($reg),$p);

 }


function m_ereg_replace($reg,$mix,$str)

  {

   $nreg=chgreg($reg);

   $rst=preg_replace($nreg,$mix,$str);

   return $rst;

  }

?>


 


主要兼容了ereg、eregi、ereg_replace三个函数,其他不常用的也就算了。


 

阅读次数:7544 2011-3-7 13:41@0


续1
续写:PHP5.3.x闹的正则表达式ereg问题的解决

有个phpmyAdmin出了不支持mcrypt的警告信息


于是想弄个mcrypt装上,找到了 mcrypt-2.6.7.tar.gz  


在configure时又要libmcrypt 于是又找到了libmcrypt-2.5.8.tar.gz


编译好了再去mcrypt那里configure还是找不到,硬把/usr/local/lib下几个文件ln -s到/lib目录下通过


又要 mhash ,又去找了 mhash-0.9.9.9.tar.gz  装好,也是ln -s去了


终于装好了,重编PHP,加上--with-mcrypt完事。


 


具体有啥用说不好,起码PHPMyAdmin不再出警告信息了。

2011-3-7 14:48@0


续2
解决PHPmyadmin的不兼容问题

1、他们也用ereg函数了,用preg报哪个文件就把哪个文件改过来。


2、新PHP会自己给单引号加斜杠,导致phpmyadmin的提交SQL语句运行功能失效,懒得去找哪个文件了,


    在libraries/common.inc.php里加上一段:


foreach ($_POST as $k0 => $v0)


 {


  $_POST[$k0]=stripslashes($v0);  


    


 }


强行改过来就是了。


2011-4-3 13:26@0


续3
续写:PHP5.3.x闹的正则表达式ereg问题的解决

又发现改的不彻底,PHPmyadmin非常变态的在POST数组的元素里面嵌套数组,


最多的嵌套四层还不止,忍无可忍写个递归来解决之:


 


function gpcon($s)


 {


   if (is_array($s))


      {


        foreach ($s as $k=>$v) $ns[$k]=gpcon($v);


        return $ns;


      } 


   else return stripslashes($s); 


 }


if ($_SERVER["REQUEST_METHOD"]=="POST") $_POST=gpcon($_POST);


2011-4-3 22:07@0


共1页 第1页
评论:


短信评论请编辑PL2329+空格+内容发送到037160599922
河南联通用户可直接编辑评论内容发送到10656006002112329
以上短信端口不另收取信息费。

发表评论:
昵称: 密码:请用商都BBS账户登录
评论:
验证码:

附近BLOG

1:[新浪围脖]不能自动同步了……

2:终于下雪了

3:[围脖]听说新浪的同步接口好了……

4:[围脖]整了个二维码程序……

5:升级PHP到5.3.x,准备开始用PDO和MysqlND连接数据库

now:PHP5.3.x闹的正则表达式ereg问题的解决

6:[围脖]昨天又去参与了一次周末面对面的录制……

7:原来收藏的一篇老文章,贴出留存《编程之道》

8:[围脖]这几天传闻日核泄露怪吓人……

9:[围脖]一副对联……

10:试了下所谓“双核浏览器”


© 2025古钺青剑 保留一切权利  并承担一切责任
豫ICP备05009517号-3号