« 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
トラックバック
このエントリーのトラックバック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