PHP regulýar ifadelerinde [ ] içindeki defisin aýratynlyklary
Defis - şeýle hem [] içinde aýratyn nyşan
(ýöne daşynda - däl). Eger size defis özi hökmünde nyşan gerek bolsa - onda ony şu ýere goýuň,
ol ýerde toparyň bölüjisi hökmünde kabul edilmez.
Bu nâme üçin möhüm: siz özüňiz habarsyz nyşanlar toparyny döredip bilersiňiz. Mysal üçin,
şeýle - [:-@] - siz iki nokat, defis we @ işarâsini saýlaýandygyňyzy oýlaýarsyňyz,
ýöne aslynda : bilen @ arasyndaky nyşanlar topary peýda bolýar. Bu topara
aşakdaky nyşanlar girýär: :, ;, ?,
<, =, >.
Olar nireden geldi? ASCII tablisasyndan - iki nokat @-dan kiçi nomere eýe - we topar peýda bolýar. Ýagny ähli toparlar ASCII tablisasy boýunça peýda bolýar (isleýän bolsaňyz mundan peýdalanyp bilersiňiz).
Buna garşy nähili göreşmeli: defis nyşanyny şu ýere goýuň
ol ýerde ol kesgitli bir toparyň nyşany hökmünde kabul edilmez, mysal üçin, başynda ýa-da ahyrynda
(ýagny [-den soň ýa-da ]-den öň).
Şeýle hem defisi ekranlaşdyryp bolýar - onda
ol ýerleşişine garamazdan özüni aňladar. Mysal üçin, [:-@] ýerine
[:\-@] - ýazyň - we indi topar bolmaz, we
üç nyşan bolar - iki nokat, defis we @ işarâsi.
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
san 1, soňra 'a'
-dan 'z'-a çenli harp, soňra san 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! 1-2 ! !'
Mysal
Indi defisi ekranlaşdyrýaly. Netijede
gözleg şablony şeýle: san 1, soňra
'a' harp, ýa-da defis, ýa-da 'z' harp,
soňra san 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! 1c2 !'
Mysal
Defisi ekranlaşdyrmazdan, diňe ýerini üýtgetmek hem bolýar:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! 1c2 !'
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
birinci nyşan - bu kiçi harp ýa-da
defis '-', soňra iki sany 'x' harp:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! Axx ! @xx'
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
birinci nyşan - bu kiçi, uly
harp ýa-da defis '-', soňra iki sany
'x' harp:
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! ! @xx'
Mysal
Defisi iki toparyň arasyna ýerleşdirip bolýar - ol ýerde ol elbetde başga bir topar döretmez:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! ! @xx'
Amaly meseleler
Setir berlen:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Aşakdaky şablona görä ähli setirleri tapyň:
'x' harp, uly ýa-da kiçi
harp ýa-da defis, 'z' harp.
Setir berlen:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Aşakdaky şablona görä ähli setirleri tapyň:
'x' harp, soňra ýa-da dollar, ýa-da
defis ýa-da plus, soňra 'z' harp.