PHPで漢字を表す正規表現

Pocket

PHPは5.1以降であれば「\p{xxxxx}」という形式のUnicode文字プロパティというものがpreg系の正規表現として使えます。
漢字は「\p{Han}」とします。「p」は小文字です。大文字だと漢字以外になります。「Han」の先頭は大文字です。
次のようにすると漢字に合致するかどうか調べられます。パターン修飾子として「u」を使います。

$text = "ABCabc123あいうえおカキクケコ漢字";
preg_match_all("/\p{Han}/u", $text, $m);
print_r($m);//Array ( [0] => Array ( [0] => 漢 [1] => 字 ) )

具体的にはどのようになっているのでしょうか。
U+0000から順番に一つずつ\p{Han}に合致する範囲を調べてみました。

\p{Han}の範囲
U+2E80-2E99
U+2E9B-2EF3
U+2F00-2FD5
U+3005-3005
U+3007-3007
U+3021-3029
U+3038-303B
U+3400-4DB5
U+4E00-9FCC
U+F900-FA6D
U+FA70-FAD9
U+20000-2A6D6
U+2A700-2B734
U+2B740-2B81D
U+2F800-2FA1D

かなり細かく指定されています。
例えば、U+3005は「々」、U+3007は「〇」(漢数字のゼロ)で、これらの間に挟まれたU+3006は「〆」です。
一般的な漢字はU+4E00-9FCCの範囲に入ります。

同様に、ひらがなは「\p{Hiragana}」、カタカナは「\p{Katakana}」とします。

preg_match("/\p{Han}|\p{Hiragana}|\p{Katakana}/u",$text);

とすると「漢字またはひらがなまたはカタカナにマッチ」となります。

[ 2015年9月19日 | カテゴリー: PHP | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報