今日はPHPでのform関連
情報を入力するフォームに電話番号などを入れる欄があると思う。
やはり数字チェックしたいところ。
よく、半角だとか、全角だとか、ハイフンなしとか、ユーザーサイドからすると面倒で、
全部フォームに入力したのにエラーになって打ち直すとかありますよね?
住所全角指定とか最悪です。
だから、数字であれば全角でも半角でもよし、ハイフンあってもなくてもOK
それ以外はエラーが一番よいのでは? と思う。
// 電話番号数字入力項目チェック
if(preg_match("/[0-9]+/",$tel) == false) {
$error_message[] = "<p><font color=red>電話番号は数字で教えてください!</font></p>";
} else
{
}
// エラーメッセージを出力する
if (count($error_message)) {
foreach ($error_message as $message) {
print("$errbody1"."$message"."$errbody2");
}
}
$tel はPOSTで受けた電話番号の値。
$errorbody1 はエラーメッセージの上部のソース
$errorbody2 はエラーメッセージの下部のソース
preg_match で$telをチェックしています。
PHPとかHTMLもそうですけど同じ動作をさせようとすると方法は沢山あると思います。
チェック項目が多くなると試行錯誤して誰がみてもわかりやすくシンプル、スマートなソース
よいと思います。
上の例では、実は1文字目を数字かどうかチェックしてるだけ。
もしハイフンなしで完全に半角数字のみなら、
preg_match("/^[0-9]+$/D",$tel)
sqlとかデータベース絡むならSQLインジェクションの問題もあるのでそっちのほうが無難。
数字とハイフンの入力チェックするパターンは、
preg_match('/^\d{2,5}-?\d1,5}-?\d{3,5}$/', $tel)
2桁~5桁の数字 - 1桁から5桁の数字 - 3桁から5桁の数字
となっているかをチェックします。
ハイフンはなしでもOKです。