【问题标题】:Switching from PHP !ereg and !eregi to preg_match [duplicate]从 PHP !ereg 和 !eregi 切换到 preg_match [重复]
【发布时间】:2011-06-24 08:59:15
【问题描述】:

希望有人能帮忙!!!

在编写表单验证时,我收到了错误消息"Deprecated: Function ereg() is deprecated in E:\Zacel_Development\sa_model_watch.co.za\insert_newProf.php on line 184"

我做了一些研究,发现我需要将 !eregi 和 !ereg 更改为 preg_match...

我确实尝试过,但无济于事......任何人都可以检查我的代码并在我难过时提供建议!

我的代码片段:

/* Check is numeric*/
$regex = "[0-9]{10}";
   if(!ereg($regex,$field)){
   $form->setError($fieldValue, "* Contact number invalid");
   }

显然应该是:

/* Check is numeric*/
$regex = "[0-9]{10}";
 if(!preg_match($regex,$field)){
 $form->setError($fieldValue, "* Contact number invalid");
 }

与:

/* Check if valid email address */
$regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*"
     ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*"
     ."\.([a-z]{2,}){1}$";
    if(!eregi($regex,$field)){
      $form->setError($fieldValue, "* Email invalid");
      }

显然应该是:

/* Check if valid email address */
$regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*"
     ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*"
     ."\.([a-z]{2,}){1}$";
    if(!preg_match($regex,$field)){
      $form->setError($fieldValue, "* Email invalid");
      }

这仍然不起作用...我做错了什么?

【问题讨论】:

    标签: php


    【解决方案1】:

    您必须使用分隔符打开和关闭您的正则表达式:

    这样:

    $regex = "[0-9]{10}";
    

    变成

    $regex = "/[0-9]{10}/";
    

    如果您希望模式不区分大小写,请使用 i 标志

    $regex = "/somepattern/i";
    

    【讨论】:

    • Tnx @PeeHaa,这创造了奇迹!你这个摇滚男人!!!
    • @PeeHaa,这听起来可能很愚蠢,但是,我查看了整个网站,无法找到如何将问题标记为已回答...大声笑.. 我只是点击关于“回答你的问题”?
    • @Celeste:您可以通过勾选投票下方的复选标记来接受答案。
    • @PeeHaa:再次感谢!
    • @Celeste:没问题,欢迎使用 SO :)
    【解决方案2】:

    这里有一些例子:

    从 ereg 开始,preg_match 可能非常令人生畏。从这里开始是一个迁移提示。

    <?php
    if(ereg('[^0-9A-Za-z]',$test_string)) // will be true if characters arnt 0-9, A-Z or a-z.
    
    if(preg_match('/[^0-9A-Za-z]/',$test_string)) // this is the preg_match version. the /'s are now required.
    ?>
    

    【讨论】:

    • 只是为了避免在阅读其他代码时混淆:/ 不是明确要求的。您可以选择您喜欢的每个分隔符。模式的第一个字符总是被视为分隔符,所以如果你开始你的模式,例如与~ 一起使用并且需要作为结束符号而不是/
    猜你喜欢
    • 2012-04-14
    • 2014-12-07
    • 1970-01-01
    • 2011-07-12
    • 2011-02-09
    • 2010-11-25
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多