preg_match等のPCRE(Perl互換正規表現)でUTF-8の日本語のパターンマッチがうまくいかないことがあります。
preg系はUTF-8日本語を正しく処理できますが、パターン修飾子「u」を正規表現の最後につけてUTF-8エンコードされた文字列であることを明示しなければなりません。
パターン修飾子「u」の例です。
preg_match("/日本語/u", $text)
ちなみに、最近のRHEL系ディストリビューションの標準RPMのPHPではmb_ereg系は正規表現エンジンにrubyと同じくoniguruma(鬼車)を使っているので、PCREの方がmb_eregより早いとは限らないようです。
最近のPHPでは、PCREのメリットは、mbstringに依存しないで済むことだと思います。
また、鬼車とPCREは非互換の部分があるので、その点をどう考えるかということもあると思います。
- 参考
各種正規表現エンジンのベンチマーク(2010/7/21 MacOSX10.6.4 + gcc-4.2.1)
http://lh3lh3.users.sourceforge.net/reb.shtml