プロが教える店舗&オフィスのセキュリティ対策術

Webサイトに問い合わせフォームを設けているのですが、電話番号のチェックで改善したいことがあります。

現状の問い合わせフォームでは、桁数が異なる場合と数字以外が入力されたら「エラー」を返しているのですが、次のように、ハイフン無しの数字だけで入力した場合、「エラー」になってしまいます。

090********
03********

現状、ハイフン有りで入力した場合でしか「正確」にならないので、ハイフン無しで入力した場合も「正確」にしたいです。

ちなみに、電話番号のコードは次の通りです。

$tel = htmlspecialchars($_POST['tel'], ENT_QUOTES, "UTF-8");
$telError = false;
if (!preg_match(
'/^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$/',
$tel)) {
$telError = true;
$tel='※正しい電話番号を指定してください。';
}

どのようなコードにしたら、ハイフンなしでもエラーチェックができるでしょうか?

A 回答 (2件)

俺のやり方は正しいとは言えないけど、チェックする前に別の変数に入れて、ハイフンをstr_replaceでざっくりやってから、[0-9]{11,12}としてる。



あと htmlspecialchars は表示する段階で使ってる。
    • good
    • 0
この回答へのお礼

ありがとうございます!

phpの理解は無いのですが、ご教示頂いた方法について理解してみたいと思います!!

それで、できればやってみます!!

お礼日時:2013/03/08 07:37

もう少しざっくりやるならこんな感じで



$pattern='/^0[1-9]+[0-9\-]+$/';

0から始まり、1から9の数字が続き、0~9の数字かハイフンだけで構成された文字列

<?PHP
$a=array("0-12345-6789","01-2345-6789","0123-45-6789","01234-5-6789","0123456789","123-456-7890");
$pattern='/^0[1-9]+[0-9\-]+$/';
foreach($a as $val){
if(preg_match($pattern,$val)){
print "ok:";
}else{
print "ng:";
}
print $val."<br>\n";
}
?>
    • good
    • 0
この回答へのお礼

ありがとうございます!

参考にさせて頂きます!!

お礼日時:2013/03/08 07:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!