Ayırıcılar

PCRE işlevlerini kullanırken şablonların ayırıcılar arasına alınması gerekir. Ayırıcılar tersbölü imi ve boşluk karakterleri hariç herhangi bir abecesayısal karakter olabilir.

Sıkça kullanılan ayırıcılar şunlardır: Bölü çizgisi (/), diyez imi (#) yaklaşık imi (~). Aşağıda, şablonlarda ayırıcı kullanımı ile örneklere yer verilmiştir.

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

Bir ayırıcının bir şablon içinde kendisiyle eşleşmesi gerekiyorsa önüne bir tersbölü imi konmalıdır. Eğer ayırıcı şablon içinde çok sık kullanılıyorsa başka bir ayırıcı seçmek okunabilirlik açısından daha iyidir.

/http:\/\//
#http://#
Bir dizgeyi bir şablon içine yerleştirmek için preg_quote() işlevi kullanılabilir ve işlevin ikinci değiştirgesinde tersbölü ile öncelenecek ayırıcı belirtilebilir.

Şimdiye kadar bahsedilen ayırıcılara ek olarak ayraç tarzı ayırıcılar da kullanmak mümkündür. Aşağıdaki örnekteki gibi, şablon kaşlı ayraçlar arasına da alınabilir.

{this is a pattern}

Şablonu sonalndıran ayırıcının ardına bir şablon değiştircisi eklemek de mümkündür. Aşağıda, harf büyüklüğüne duyarsız eşleşmeyle ilgili bir örnek vardır:

#[a-z]#i

add a note add a note

User Contributed Notes 6 notes

up
23
Pedro Gimeno
2 years ago
Note that bracket style opening and closing delimiters aren't a 100% problem-free solution, as they need to be escaped when they aren't in matching pairs within the expression. That mismatch can happen when they appear inside character classes [...], as most meta-characters lose their special meaning. Consider these examples:

<?php
  preg_match
('{[{]}', ''); // Warning: preg_match(): No ending matching delimiter '}'
 
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'
 
preg_match('{[}{]}', ''); // Warning: preg_match(): Unknown modifier ']'
?>

Escaping them solves it:

<?php
  preg_match
('{[\{]}', ''); // OK
 
preg_match('{[}]}', ''); // OK
 
preg_match('{[\}\{]}', ''); // OK
?>
up
2
sln
1 year ago
The dirty little delimiter secret they don't tell you ->
Examples: Balanced delims {\d{2}Some\\{33\\}\w{5}} parses to
\d{2}Some\\{33\\}\w{5} and {\d{2}Some\{33\}\w{5}} parses to \d{2}Some{33}\w{5}. 
Un-Balanced delims +\d{2}Some\+33\+\w{5}+ parses to \d{2}Some+33+\w{5} and
+\d{2}Some\\+33\\+\w{5}+ won't parse because the delimiter is unescaped.
up
3
Munin
2 years ago
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'

preg_match('{[\}]}', ''); // OK
up
1
Anonymous
23 days ago
check out the last user contributed note on this page

http://php.net/manual/en/regexp.reference.delimiters.php
up
-2
hmelin at ya dot ru
1 year ago
A delimiter can be any ASCII non-alphanumeric, non-backslash, non-whitespace character:  !"#$%&'*+,./:;=?@^_`|~-  and  ({[<>]})
up
-61
cissyyau77 at yahoo dot com dot hk
4 months ago
you guys can call me for sex
+852 92606871
To Top