可能重複:
A comprehensive regex for phone number validation
PHP: Validation of US Phone numbers電話號碼驗證PHP
我想使用的preg_match以驗證電話號碼,但任何時候我在正確的格式鍵入電話號碼(111)111-1111,它返回無效的字符錯誤,而不是真實的。我不認爲這有什麼不對我正則表達式(據我所知),所以我猜有什麼毛病我的邏輯
function validate_phone_number($phoneNumber, $requiredLength = 14)
{
//Check to make sure the phone number format is valid
for ($i = 0; $i < strlen($_POST[$phoneNumber]); $i++){
if(preg_match('/^\(\d{3}\) \d{3}-\d{4}\$/', $_POST[phoneNumber]{$i}))
{
return true;
}
else
{
return "<h3>" . "The phone number you entered contains invalid characters" . "</h3>";
}
//Check to make sure the number is the required length
if (strlen($_POST[$phoneNumber]) > $requiredLength) {
return "<h3>" . "The phone number you entered contains too many characters" . "</h3>";
}
else if (strlen($_POST[$phoneNumber]) < $requiredLength) {
return "<h3>" . "The phone number you entered does not contain enough characters" . "</h3>";
}
}
return true;
}
我用什麼來調用函數
if (count($_POST) > 0) {
$error = array();
$phone = validate_phone_number('phoneNumber');
if($phone !==true) {
$error[] = $phone;
}
if (count($error) == 0) {
//Phone number validates
}
else {
echo "<h2>Error Message:</h2>";
foreach($error as $msg) {
echo "<p>" . $msg . "</p>";
}
}
}
很多電話號碼不符合該格式。 – 2012-10-28 18:47:02
我發現了一件似乎錯誤的事情:'validate_phone_number()'對'$ _POST'具有它不應該有的依賴。相反,將函數需要的所有內容都傳遞給參數。這可能是錯誤,你可能想用第一個函數參數替換它。 – hakre
我假設你是美國專用網站?我提到這是因爲這是因爲您使用的手機格式在世界上大多數國家都是錯誤的。 – Spudley