「すべての漢字を取り出す正規表現」をPHPで試す、を正しく行う
2006年12月12日
なので、できる限りpreg系の関数を使いたいわけですが、検索対象や検索パターンに日本語が含まれているときは、日本語処理に対応したereg系の関数であるmb_ereg系の関数が使われることが多いようです。
以前、「すべての漢字を取り出す正規表現」をPHPで試す、を正しく行う方法。
以前はmb_eregによる方法を示しましたが、次の方法の方がうまく動作するようです。
preg_match_all('/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+/u', $strToSplit, $aMatches);
print_r($aMatches); // マッチ結果が全出力
確かに、なぜか取れない漢字があったので、( ) で括って独自に追加したりしていましたが、この方が簡単でいいですね。
/u を使うことで UTF-8 として認識するようです。
ちなみに、以前紹介したのは次のようにループが入っちゃってました。
while(1){
$bytes = mb_ereg("[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+", $str, $match);
if ($bytes == FALSE) {
break;
} else {
$match = $match[0];
array_push($token, $match);
}
$pos = strpos($str, $match);
$str = substr($str, $pos+$bytes);
}
preg_match_all関数ならマッチ結果を全部連想配列に入れることが可能なので、全ての漢字を取り出したい場合はこっちを使ったほうがよいですね。
投稿者 KJ : 2006年12月12日 07:03
|
![]()
間違いの指摘をしていただける方はメールでお願いします
最新のブログ記事
- Facebook風のサムネイル付きサジェストボックスを実装するサンプル
- 2009年7月3日 管理人のブックマーク
- PHPとCSSで動的に綺麗なパーセンテージグラフを描画サンプル
- 普通の写真をすばらしいアートにするためのPhotoshopチュートリアル集
- シマシマの見やすいテーブルを作成するMooToolsプラグイン「ZebraTable」
- 2009年7月2日 管理人のブックマーク
- 「フォローしてね」を表すTwitterアイコン集
- シンプルなTwitter検索を行うためのPHPスクリプト
- PHPのcURLを使ってできる便利なサンプル集
- 2009年7月1日 管理人のブックマーク
- iPhone3.0の緯度経度APIで移動履歴を地図描画するサンプル





















