POSIX regex'ten farklılıklar

PHP 5.3.0'dan itibaren POSIX Regex eklentisinin kullanımı önerilmemektedir.POSIX regex ile PCRE regex arasında bazı farklar vardır. Bu sayada, PCRE'ye geçerken size gerekli olacak en belirgin farklar listelenmiştir.

  1. PCRE işlevleri şablonların ayırıcılar arasına alınmasını gerektirir.
  2. POSIX'in tersine, PCRE eklentisi harf büyüklüğüne duyarsız eşleşmeye adanmış işlevlere sahip değildir. Bunun yerine /i şablon değiştiricisi. kullanılır. Eşleşme stratejisini değiştirmek için kullanılabilecek başka değiştiriciler de vardır.
  3. POSIX işlevleri en soldaki en uzun eşleşmeyi bulurken PCRE ilk geçerli eşleşmede durur. Eğer dizgenin tamamı eşleşmiyorsa bir fark ortaya çıkmaz ama eşleşme durumunda eşleşme hızı ve sonuçlar bakımından kayda değer farklar söz konusudur. Bu farkları görebilmek için Jeffrey Friedl'ın "Mastering Regular Expressions" adlı eserinden alımış örneğe bakalım. oneselfsufficient dizgesinde one(self)? (selfsufficient)? şablonunun PCRE ile kullanırsak eşleşme sonucu oneself olacaktır. POSIX ile kullanıldığında ise, sonuç dizgenin tamamı, yani oneselfsufficient olacaktır. Her iki sonuç da özgün dizge ile eşleşmesine rağmen POSIX en uzun eşleşmeyi gerektirir.

İşlevlerdeki farklar
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