« magic_quotes_gpc | メイン | MacBook キタ━━━━━━(゚∀゚)━━━━━━ !!!! »

2006年05月15日

phpでひらがな、カタカナの判別

phpでマルチバイト(日本語)の文字を判別にはmb_eregを使えば簡単なのですが、php4ではmb_eregはデフォルトでは使えず、phpのインストール時に「--enable-mbregex」としてconfigureしなければいけません。現状ではphp5がインストールされているサーバーや「--enable-mbregex」でconfigureされたphp4サーバーはまだ少ないので、mb_eregが使えない場合は、以下のようにpreg_match関数のPerl正規表現で文字コードを判別します。Perlプログラマでしたらおなじみですね。

他のWebサイトではmb_eregを使った例ばかりなので、今更ではありますが、参考までにpreg_matchでの例を記述してみます。


後述のサンプルスクリプトで使用する変数は以下です。文字コードはEUC-JP。
<?php
 $str1 = mb_convert_encoding('あいうえお',"EUC-JP","auto");
 $str2 = mb_convert_encoding('アイウエオ',"EUC-JP","auto");
 $str3 = 'abcde';
?>


ひらがなの判別(mb-egreg)

※全てひらがなで1文字から5文字であればTrue
<?php
 $result1 = mb_ereg("^[ぁ-ん]{1,5}$",$str1);
 $result2 = mb_ereg("^[ぁ-ん]{1,5}$",$str2);
 $result3 = mb_ereg("^[ぁ-ん]{1,5}$",$str3);

 var_dump($result1);
 var_dump($result2);
 var_dump($result3);
?>
[実行結果]

int(1)
bool(false)
bool(false)


ひらがなの判別(preg_match)

※全てひらがなで1文字から5文字であればTrue
<?php
 $result1 = preg_match("/^(\x82[\x9F-\xF1]){1,5}$/i",$str1);
 $result2 = preg_match("/^(\x82[\x9F-\xF1]){1,5}$/i",$str2);
 $result3 = preg_match("/^(\x82[\x9F-\xF1]){1,5}$/i",$str3);

 var_dump($result1);
 var_dump($result2);
 var_dump($result3);
?>
[実行結果]

int(1)
int(0)
int(0)


カタカナの判別(mb-egreg)

※全てカタカナで1文字から5文字であればTrue
<?php
 $result1 = mb_ereg("^[ァ-ヶ]{1,5}$",$str1);
 $result2 = mb_ereg("^[ァ-ヶ]{1,5}$",$str2);
 $result3 = mb_ereg("^[ァ-ヶ]{1,5}$",$str3);

 var_dump($result1);
 var_dump($result2);
 var_dump($result3);
?>
[実行結果]

bool(false)
int(1)
bool(false)


カタカナの判別(preg_match)

※全てカタカナで1文字から5文字であればTrue
<?php
 $result1 = preg_match("/^(\xA5[\xA0-\xF6]){1,5}$/i",$str1);
 $result2 = preg_match("/^(\xA5[\xA0-\xF6]){1,5}$/i",$str2);
 $result3 = preg_match("/^(\xA5[\xA0-\xF6]){1,5}$/i",$str3);

 var_dump($result1);
 var_dump($result2);
 var_dump($result3);
?>
[実行結果]

int(0)
int(1)
int(0)


SJISやその他の文字コードの正規表現は以下を参照。
Produce by Sieg: [Perl での正規表現]

投稿者 Utayume : 2006年05月15日 15:19| 05 Work(Perl, PHP, etc)

AD

ベルメゾンネット ニッセン セシール ムトウ IMAGEnet DHCオンラインショップ 白鳩/京都発インナーショップ

トラックバック

このエントリーのトラックバックURL:
http://ondes-martenot.info/MT/mt-tb.cgi/680

このリストは、次のエントリーを参照しています: phpでひらがな、カタカナの判別:

» ひらがな、かたかなの正規表現チェック from 我思う故に我あり
UTF-8のひらがな/カタカナの正規表現(PHP)http://d.hatena.ne.jp/hiro_y/20061003/1159869117UTF-... [続きを読む]

トラックバック時刻: 2008年09月17日 09:40

AD

Mac ソフトのことなら act2.com デル株式会社 ioPLAZA【アイ・オー・データ直販サイト】 Just MyShop(ジャストシステム)