2013-10-23 49 views
-3

我的PHP錯誤處理似乎不工作,我不知道我已經找了幾個小時的理由,只是不能把我的手指放在它。我的html鏈接正確,並運行php表單。此外,'電話'的錯誤處理工作得很好,因此,我的preg_match必須有一個問題,因爲這是非工作錯誤之間唯一的共同點?我知道它可能會非常簡單,而且我看起來很過分,但我已儘可能多地尋找它。 ####注意:我已經準備好嘗試其他類型的字符串和文字,並將if(!preg_match($ string_exp,!first_name)等的代碼更改並且仍然不起作用,任何幫助都非常感謝。 。處理這些錯誤和輸出錯誤信息,但它不preg_match錯誤處理不工作

$string_exp = "/^[A-Za-z .'-]+$/"; 
    if(preg_match($string_exp,$first_name) == 0) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 

    if(preg_match($string_exp,$last_name) == 0) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 
    $food_expected = "0"; 
    if(preg_match($food_expected,$formFood) == 0) { 
    $error_message .= 'Please select a Food.'; 
} 

    if(strlen($telephone) > 11) { 
    died($error_message); } 
    if(strlen($telephone) < 11) { 
    died($error_message); 
    } 
+1

你甩100 +代碼行,你既不解釋它如何工作,也不提供示例輸入來重現問題。如果你確實有構成正則表達式的問題,我敢肯定你可以編輯問題並用2行代碼替換所有的代碼。 –

+0

如果您的用戶輸入非英文名稱(如'Álvaro'),則可以在'$ error_message'中寫入某些內容。該如何中止處理? –

回答

0

如果你讀的preg_match PHP手冊頁()here,它具有以下的說:

警告 此函數可能會返回布爾FALSE,但也可能會返回一個非布爾值,其值爲FALSE閱讀關於布爾的部分以獲取更多信息。使用===運算符來測試此函數的返回值。

我建議你通過與運營商===測試你preg_match的返回值打擊虛假啓動:

if (preg_match($string_exp,$first_name) === false) 

,以找出是否有與您的正則表達式的問題。

在任何情況下,請勿在此處使用==運算符。

說完這些,在你的問題的未經編輯的版本,如果電話號碼爲11個字符長,died()功能不會被調用與$error_message,即使preg_match()返回0

+0

非常感謝您的幫助。 –