[PHP]文字が、かな、カナ、漢字、アルファベット、数字以外か判定する

たとえば、登録フォームの「名前」欄とか・・・。

ユーザーが入力した文字に、記号や見えない文字など、適さない文字が含まれているかチェックします。

つまり・・・「ひらがな」「カタカナ」「漢字」「アルファベット」「数字」
これらの文字は許可するが、それ以外の文字が1つでも含まれていたら許可したくない場面。

/*
 * 引数のテキストが、
 *  - 半角英数字
 *  - 全角カタカナ
 *  - 全角ひらがな
 *  - 漢字
 * これら以外の文字を含むか確認。
 * true : 含む
 * false : 含まない
 */
function checkAlfNumKanaKanji($text){
	return (preg_match('/[^a-zA-Z0-9ぁ-ん一-龠ァ-ヴー]/u', $text));
}

こんな感じです。
次のように使います。

	//  UTF-8の前提です。
	mb_regex_encoding('utf-8');
	mb_internal_encoding('utf-8');

	$text = 'ひらがなカタカナ漢字abc123';

	//	英数字を半角に、半角カナを全角カナに
	$text = mb_convert_kana($text, 'KVa', 'utf8');

	//	↓はfalseを返します。
	if (checkAlfNumKanaKanji($text)){
		echo 'NG';
	}

	//	不正な文字を加える。
	$text .= ',,,,,';

	//	↓はtrueを返します。
	if (checkAlfNumKanaKanji($text)){
		echo 'NG';
	}

たった1行なんだし、functionにする意味は?

if (preg_match('/[^a-zA-Z0-9ぁ-ん一-龠ァ-ヴー]+/u', $text){
	echo '不正な文字が含まれています。';
} else {
	echo 'OKです';
}

こう書いても良いんですけどね。

でも、こんな長いIF文(正規表現)を覚えていられますか?
比較箇所が多いと大変だし、異なるプロジェクトを開発するとなったら、またこの正規表現を思い出す(取り出す)必要があります。

なので、私は関数化して、「Utility.php」に放り込みました。

つぶやくつぶやく

No related posts.

関連記事はYARPP関連記事プラグインによって表示されています。

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

No user responded in this post

Subscribe to this post comment rss or trackback url
Leave A Reply

 Username (Required)

 Email Address (Remains Private)

 Website (Optional)

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

(株)オルタ

香川県高松市。

ホームページ制作
・ショッピングサイト制作
・コミュニティサイト制作
・システム開発
・各種業務アプリケーション
・仕様作成、設計、開発、運用、保守...

カレンダー

2009年8月
« 7月   9月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

検索

カスタム検索

自己紹介

aulta (オルタ)
香川県高松市在住。
1979年2月生の男。
- - - - - - - - - - - -
PHP, Perl, JAVA, Tomcat, MySql, Oracle, Sql Server, Linux, html, xml, css, javascript, VB, VC, etc...
- - - - - - - - - - - -
香川でプログラムやweb関係の方と仲良くなりたいと思ってます。あっでも地域も趣味も幅広く色んな人と仲良くなりたいので、私に興味を持たれた方はお気軽に【ご連絡】ください。