从PHP!ereg和!eregi切换到preg_match

时间:2011-06-24 08:59:15

标签: php

我希望有人能帮忙!!!

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

我做了一些研究,发现我需要改变!eregi和!ereg to 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");
      }

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

2 个答案:

答案 0 :(得分:2)

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

那样:

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

变为

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

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

$regex = "/somepattern/i";

答案 1 :(得分:0)

这里有一些例子:

从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.
?>