2013-02-24 149 views
1

我已经创建了一个获取有关他离开的城市的用户数据的表单。表单将数据存储在称为简档的表格中。我正在使用一个将数据插入配置文件表的功能。如果已经有数据,该函数只是更新表格。如果用户没有将数据插入城市字段并按下提交,则表格将继续保留以前的数据,因为没有提交。使用preg_match进行表单验证

在表单中,我想进行验证,以便用户只插入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和空格)。只有在用户输入数据时,我如何才能使用上述代码来验证表单。如果没有,那么继续没有任何问题。

+0

而不是使用'if(empty($ _ POST)=== false)',你能不能'if(!empty($ _ POST))'?此外,而不是'if(empty($ errors)=== true)'你可以做'if(empty($ errors))'。 – Piccolo 2013-02-24 19:19:41

回答

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函数之前。

+0

我该如何修改它以产生错误? – 33528 2013-02-24 19:09:35

+0

更新了我的答案 – 2013-02-24 19:16:02

+0

好吧,你是对的...它的工作原理。谢谢你,朋友。 – 33528 2013-02-24 19:17:52