2013-03-07 207 views
0

我試圖讓我的代碼適用於表單。我希望它能驗證電話號碼。它想繼續告訴我即使是這樣,電話號碼也是不正確的。驗證表單中的電話號碼

這是我的。我拿出了與這部分相關的其他代碼來簡化它。我不確定我的代碼是否正確,但我希望有人能夠輸入數字。輸入一個10位數字的字符串,並且如果可以的話,將其更改爲以下格式(XXX)XXX-XXXX。

<?php 

include_once "contact-config.php"; 

$error_message = ''; 

if (!isset($_POST['submit'])) { 

    showForm(); 

} else { //form submitted 

    $error = 0; 


if(!empty($_POST['phone'])) { 
$phone[2] = clean_var($_POST['phone']); 
if (!validPhone($phone[2])) { 
    $error = 1; 
    $phone[3] = 'color:#FF0000;'; 
    $phone[4] = '<strong><span style="color:#FF0000;">Invalid Phone Number</span></strong>'; 
    } 
} 
    else { 
    $error = 1; 
    $phone[3] = 'color:#FF0000;'; 
    } 

<td class="quote_text" style="width:{$left_col_width}; text-align:right; vertical-align:top; padding:{$cell_padding}; {$phone[3]}"><span class='required'><b>* </b></span>{$phone[0]}</td> 
<td style="text-align:left; vertical-align:top; padding:{$cell_padding};"><input type="text" name="{$phone[1]}" value="{$phone[2]}" size="20" maxlength="11" id="{$phone[1]}" /> {$phone[4]}</td> 


/* Phone Number Validation Function. */ 

function validPhone($phone) 
{ 
    $isValid = true; 
    if(array_key_exists('phone', $_POST)) 
    { 
    if(!preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', $_POST['phone'])) 
    { 
     $isValid = false; 
    } 
} 
return $isValid; 
} 
?> 

回答

0

我對你的原始代碼有一些評論,雖然我還沒有深入調試過。

  1. http://php.net/manual/en/function.preg-match.php有一個正則表達式,你可能會嘗試更復雜。這是關於頁面的一半。我在http://regexpal.com/http://www.solmetra.com/scripts/regex/index.php上試過你的正則表達式;它在我使用的電話號碼上的任何地方都不起作用。我從PHP參考頁面獲取的正則表達式,如下所示,工作正常。 ()()()()()()()()()()()()() ?:(?< =(\ d {3})))? ?(?:(?< = \ d {3})[.-])?([2-9] \ d {2})[。 (\ d {1,5}))??(\ d {1,5})?$/

  2. 您正在使用參數調用該函數,然後不使用函數體中的參數,這讓我覺得很奇怪。

  3. 這可能是PHP: Validation of US Phone numbers的一個重複主題,它非常全面。