2013-02-24 80 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