PHP 5.3.0 以降、POSIX 正規表現 拡張モジュールは非推奨となりました。POSIX の正規表現と PCRE の正規表現にはさまざまな違いがあります。 このページでは、PCRE への移行の際に知っておくべきもっとも重要な違いをまとめます。
PCRE_CASELESS
) パターン修飾子
でサポートしています。それ以外にもパターン修飾子がいくつかあり、
マッチングの振る舞いを変えることができます。
one(self)?(selfsufficient)?
を文字列
oneselfsufficient
に適用すると
oneself
にマッチしますが、
POSIX の場合は文字列全体 oneselfsufficient
にマッチします。
どちらの結果も元の文字列にマッチしますが、POSIX の場合はもっとも長いものを結果とするのです。
:
、.
あるいは =
で囲まれている文字クラスを PCRE で使うと、これらのサポートしていない機能を使うとして、コンパイルエラーが発生します。
POSIX | PCRE |
---|---|
ereg_replace() | preg_replace() |
ereg() | preg_match() |
eregi_replace() | preg_replace() |
eregi() | preg_match() |
split() | preg_split() |
spliti() | preg_split() |
sql_regcase() | No equivalent |