ウェブデザイナーの日記

php :: フォーム入力チェックの基本的な正規表現を一括おまとめのユーザー定義関数

2007.08.14 17:08

php :: フォーム入力チェックの基本的な正規表現を一括おまとめのユーザー定義関数

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のバージョンの違いやその他環境の違いによって挙動が異なるときがあるようです。望まない結果が出てきたら各自ジタバタしてくださいませ。

, , ,

ウェブデザイナーの日記 [コメント (0) :: トラックバック (0) ]

このエントリーのトラックバックURL:
http://blog.3ot.net/ping/948