2011-07-17 22 views
1

有効な電話番号を入力しなくても、正規表現がそれを検証して有効なメッセージを表示します。どんなアイデアがうまくいかない?regexの検証が機能していません(電話番号と名前)

<form action="<?php $PHP_SELF; ?>" method="POST"> 
Name (First Middlie Last) : <input type="text" name="name" value=""><br /> 
Telephone Number : <input type="text" name="phone" value=""><br /> 
<input type="submit"> 
</form> 

<?php } else { 

extract($_REQUEST); 

$phoneDashes = preg_replace("/\D/","", $phone); 
$nameRegex = $_POST['name']; 

if(preg_match("/(\d{3})(\d{3})(\d{4})/", $phoneDashes,$matches)) { 
echo "Valid phone number <br />"; 
    } 
else { 
    echo "Not a valid phone number <br />"; 
} 

preg_match("/(^[\-a-z]+)\s([\-a-z])\s([\-a-z]+)$/i", $nameRegex,$names); 

echo "Your name: $names[3], $names[2] $names[1] <br />"; 
echo "Your phone Number: $matches[1]-$matches[2]-$matches[3] <br />"; 

} 

?> 
+0

'if'文ではどのような文字列を使用しますか? – VMAtm

+0

電話番号文字列?問題はどこにあるの? – harry

+0

いいえ、あなたは間違った結果を得るためにどのような価値を使いましたか? – VMAtm

答えて

1

あなたが^$アンカーを必要とする

$match = preg_match("/(\d{3})(\d{3})(\d{4})/", $phoneDashes,$matches); 
if($match) { 
echo "Valid phone number <br />"; 
    } 
else { 
    echo "Not a valid phone number <br />"; 
} 
+0

mmmに追加されました。それもうまくいけません。私が何を入れても、それは有効な数字です。これ以上の提案はありますか?ご協力いただきありがとうございます。 – harry

+0

http://sandbox.phpcode.eu/g/4ef02.php?phone=1234567891作品 – genesis

+0

回答が編集されました。今すぐ試してください – genesis

0

を試してみてください。これを試してください:

if (preg_match('/^(\d{3})(\d{3})(\d{4})$/', $phoneDashes, $matches)) 
    // Valid phone number 
else 
    // Not valid phone number 
関連する問題