eregとpreg

eregとpregのようにphpでは最初に「p」がついたperl互換の正規表現の関数があります。

どちらを使うかということでなやむことがありますが、できればどちらかに統一するほうがいいとおもいます。

PHP独自のereg系とPerl互換のpreg系では、たとえば、「Perl 互換の正規表現構文を使用する preg_match() のほうが、多くの場合 ereg() よりも速く動作します。」というような情報もあります。

日本語を使う場合は、「mb_」の付いたmb_eregなどを使いがちですが、「上」や「一」といった漢字がスルーされてしまうそうです。

PCRE のバージョンに依存しますが「preg系の正規表現にパターン修飾子「u」を指定すると、パターン文字列がUTF-8でエンコードされた文字列として扱われるようになります。」ということで、

preg_match_all('/[a-zA-Z0-9]/u', $str, $matches);

という使い方がいいでしょう。

コメントを残す

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