使用preg_match进行表单验证

时间:2013-02-24 18:49:43

标签: forms validation

我创建了一个表单,用于获取有关他离开的城市的用户数据。表单将数据存储在名为profile的表中。我正在使用一个将数据插入配置文件表的函数。如果已有数据,则该函数仅更新表。如果用户未将数据插入城市字段并按提交,则表格将继续保留以前的数据,因为没有提交。

在表单中,我想进行验证,以便用户只插入a-z或空格字符。

我已使用以下代码进行验证:

if(  empty($_POST) === false  ){

  if(  empty($errors) === true  ){

   if( preg_match('/^[a-zA-Z ]+$/', $_POST['city']) ===0 ){
     $errors[]='<font color="#963">City must only contains a-z and spaces</font>';
     }

    }
   }

有效!但现在的问题是,如果用户将表单保留为空并按下提交,则上述代码会强制他放置数据(说:City必须只包含a-z和空格)。仅当用户输入数据时,如何使用上述代码验证表单。如果没有那么继续没有任何问题。

1 个答案:

答案 0 :(得分:0)

您甚至可以在不生成错误的情况下执行此操作。取代

if( preg_match('/^[a-zA-Z ]+$/', $_POST['city']) ===0 ){

使用

$_POST['city'] = preg_replace("&[^a-zA-Z ]&","",$_POST['city']);

在插入数据库之前,这将替换所有非小写字母和非空格。

修改

如果您仍想生成错误,请使用

if( preg_match("&[^a-zA-Z ]&",$_POST['city']) ){
    $errors[]='<font color="#963">City must only contains a-z and spaces</font>';
}
在preg_replace之前