「すべての漢字を取り出す正規表現」をPHPで試す、を正しく行う
2006年12月12日-
スポンサード リンク
Information Flow and Stock: [PHP] mb_ereg()じゃない、preg_match_all()に/uをつけるんだ!
なので、できる限り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関数ならマッチ結果を全部連想配列に入れることが可能なので、全ての漢字を取り出したい場合はこっちを使ったほうがよいですね。
スポンサード リンク
Advertisements
SITE PROFILE
最新のブログ記事(新着順)
- 立体感がリアルなON・OFFスイッチ実装jQueryデモ
- PHPフレームワークにTwitter,Facebook等の認証を速攻実装できる「Opauth」
- 2012年5月23日 管理人のブックマーク
- PC・スマホ・タブレットで動くクールなHTML5スライドショー実装ができる「Juicebox」
- 既にここまで出来るWebGLのデモ22
- 2012年5月22日 管理人のブックマーク
- CSSな吹き出しを作れるWEBツール「cssarrowplease」
- PHP+Bootstrapで書かれた美しいGitリポジトリビューア「GitList」
- 2012年5月21日 管理人のブックマーク
- CSS3で描かれたシェイプのサンプル集
- 過去のエントリ



















間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)



