php :: フォーム入力チェックの基本的な正規表現を一括おまとめのユーザー定義関数
メールアドレスのチェックやurlのチェック等といった、ポスト入力された文字列のチェックはフォーム作成の基本であります。よく使う正規表現をまとめて、それぞれに大文字英数のキマリ名をつけといて、文字列とコミで関数に渡す。んで、エラーがあれば返すという機能です。エラーなしならスルーです。あらかじめ決められたキマリ名は大文字英数アンダーバーのみとします。たとえばメールアドレスをチェックしたかったらばこんなかんじで↓
return str_matching("yourname@yourname.com", "EMAIL");
とやると、メールアドレスが正しければ戻り値ナシ、間違ってれば、
メールアドレスの形式。例: yourname@yourname.com
という文字列を返します。そのままエラー文字列として表示させたらべんりかなと。よくあるものばかりつけときました↓
NUM 半角数字のみ NUM_ABC 半角英数のみ ABC_KIGOU 半角英数といくつかの記号類(詳しくはコードを見てネ) KANA_ZEN 全角カタカナのみ KANA_HAN 半角カタカナのみ URL urlの書式 EMAIL メールアドレスの書式
これらは$pattern_arrayという配列に入ってるので、汎用的に使いたいパターンが出てきたら、わかりやすいキマリ名をつけて配列に追加していったらよいです。『キマリ名は大文字英数アンダーバーのみ』といったのは意味があるのであって、これに合致しないパターンを渡すと、つまり、こんなことをすると↓
echo str_matching("Love is Power", "^(Knowledge|Love)\sis\s(P|p)ower!*$");
こんどは2つめの引数をmb_eregに直に正規表現のパターンとして渡します。この場合だと間違った構文を渡すと当然エラーになります。「正規表現があってるかどうか確認する正規表現」というのがあればよいのですが、私、そこまでグルではありませんので書けません。どっかにないかな。ご存知の方は教えてください。
尚、コードの中に紹介した正規表現は、書籍やウェブで教わったもの、自分で書いたものが含まれますが妥当性は保証できません。phpのバージョンの違いやその他環境の違いによって挙動が異なるときがあるようです。望まない結果が出てきたら各自ジタバタしてくださいませ。
正規表現, php, フォーム入力チェック,
このエントリーのトラックバックURL:
http://blog.3ot.net/ping/948
