PHP 5.3.0 以降、POSIX 正規表現拡張機能は非推奨になりました。 POSIX 正規表現と PCRE 正規表現の間にはいくつかの違いがあります。この記事では、PCRE に切り替えるときに知っておく必要がある最も重要な違いをリストします。
PCRE 関数では、パターンを区切り文字で閉じる必要があります。
POSIX とは異なり、PCRE 拡張機能には大文字と小文字を区別しないマッチングのための専用関数がありません。代わりに、サポートは i (PCRE_CASELESS) モード修飾子を使用して同じジョブを実行します。 他のパターン修飾子を使用して、マッチング戦略を変更することもできます。
POSIX 関数は左から順に最長一致を探しますが、PCRE は最初の正当な一致の後で停止します。文字列が一致しない場合は問題ありませんが、一致すると結果と速度に違いが生じます。この違いを説明するために、次の例を考えてみましょう (Jeffrey Friedl の著書『Mastering Regular Expressions』より)。 パターン one(self)?(selfsufficient)? を使用して文字列 selfsufficient と一致させると、PCRE は自分自身と一致しますが、POSIX では、結果は文字列 selfsufficient 全体になります。 どちらの部分文字列も元の文字列と一致しますが、POSIX は最も長い部分文字列を結果として扱います。
関数比較表
POSIX
PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split () preg_split()
spliti() preg_split()
sql_regcase() 同等の関数はありません