PHP'nin preg_ fonksiyonların herhangi regex argüman çift ayrılmış olması gerektiğini biliyor musunuz? Örneğin:
preg_match_all(`'/foo/'`, $target, $results)
'...' ve string ayırıcılar, /.../ ve regex sınırlayıcıları ve ifadenin are foo. Regex ayırıcısını bölü olmak zorunda değilsiniz, onlar sadece maç var; bazı popüler seçeneklerdir #...#, %...% ve ~...~. Ayrıca, {...}, (...) gibi parantez karakter dengeli çift, [...], ve <...> olabilir; bu çok daha az popüler, ve iyi bir nedenle içindir.
Eğer regex sınırlayıcılarınıda bırakırsanız, regex-derleme faz muhtemelen başarısız olur ve hata mesajı muhtemelen hiçbir mantıklı olacaktır. Örneğin, bu kod:
preg_match_all('<td style="white-space:nowrap;">###.##</td>', $s, $m)
... Bu mesaj oluşturacaktır:
Unknown modifier '#'
Bu regex ayraç olarak köşeli parantez ilk çift kullanmaya çalışır, ve durum-duyarsız için regex düzenleyiciler (örneğin, i gibi >, aşağıdaki neyse, {[(2) }] satırlı için). Bunu gidermek için bunu gibi, real regex ayraçları eklemek istiyorum:
preg_match_all('%<td style="white-space:nowrap;">###\.##</td>%i', $s, $m)
Sınırlayıcı seçimi kişisel tercih ve kolaylık bir konudur. I # veya / kullanılmış olsaydı, ben gerçek regex bu karakterleri kaçmak zorunda kalacaktı. Bir regex metakarakterdir çünkü ben . kaçtı. Son olarak, düzenleyiciler ve HTML isn't harf duyarlı çünkü kullanımını göstermek için i değiştirici ekledi.