Kuepusha Herufi Maalum Katika Semi za Kawaida za PHP
Tukichukulia kwamba tunataka kufanya herufi maalum iashirie yenyewe. Ili kufanya hivyo inahitaji kuepushwa kwa kutumia mshale wa nyuma. Hebu tuangalie kwa mifano.
Mfano
Katika mfano ufuatao, mwandishi wa semi ya kawaida alitaka,
muundo wa utafutaji uonekane kama hii: herufi
'a', kisha alama ya kujumlisha '+', kisha
herufi 'x'. Hata hivyo, mwandishi wa msimbo
hakuweka kikomo herufi '+' na kwa hivyo
muundo wa utafutaji unaonekana kama hii:
herufi 'a' mara moja au zaidi, kisha
herufi 'x':
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a+x#', '!', $str);
?>
Matokeo yake, ndani ya kutofautisha kitaandikwa yafuatayo:
'a+x ! ! !'
Mfano
Sasa mwandishi ameweka kikomo alama ya kujumlisha kwa mshale wa nyuma.
Sasa muundo wa utafutaji unaonekana kama inavyotakiwa:
herufi 'a', kisha alama ya kujumlisha
'+', kisha herufi 'x'.
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a\+x#', '!', $str);
?>
Matokeo yake, ndani ya kutofautisha kitaandikwa yafuatayo:
'! ax aax aaax'
Mfano
Katika mfano huu, muundo unaonekana kama hii: herufi
'a', kisha nukta '.', kisha
herufi 'x':
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a\.x#', '!', $str);
?>
Matokeo yake, ndani ya kutofautisha kitaandikwa yafuatayo:
'! abx azx'
Mfano
Katika mfano ufuatao mwandishi alisahau kuweka kikomo mshale na sehemu ndogo zilizoingia ndani ya semi ya kawaida zilizopatikana, kwa sababu nukta isiyowekwa kikomo inaashiria herufi yoyote:
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a.x#', '!', $str);
?>
Matokeo yake, ndani ya kutofautisha kitaandikwa yafuatayo:
'! ! !'
Mfano
Zingatia kwamba kama utasahau mshale wa nyuma kwa nukta (inapotakiwa iaashirie yenyewe) - hii inaweza isionekane:
<?php
preg_replace('#a.x#', '!', 'a.x'); // itarudisha '!', kama tulivyotaka
?>
Kwa kuonekana inafanya kazi sawa (kwa sababu nukta
inaashiria herufi yoyote, pamoja na nukta ya kawaida
'.'). Lakini ikiwa utabadilisha mfuatano,
ambapo badilisha hufanyika - tutaona makosa yetu:
<?php
preg_replace('#a.x#', '!', 'a.x abx azx'); // itarudisha '! ! !', lakini ilitarajiwa '! abx azx'
?>