2013-03-07 67 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的一个重复主题,它非常全面。