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.