Ekranizimi i karaktereve speciale në regex PHP
Le të supozojmë se duam që karakteri special të përfaqësojë vetveten. Për këtë ai duhet të ekranizohet duke përdorur backslash -le. Le të shohim me shembuj.
Shembull
Në shembullin vijues, autori i regex-it deshi
që shablloni i kërkimit të dukej kështu: shkronja
'a', pastaj plus '+', pastaj
shkronja 'x'. Megjithatë, autori i kodit
nuk e ka ekranizuar simbolin '+' dhe për këtë arsye
shablloni i kërkimit në fakt duket kështu:
shkronja 'a' një ose më shumë herë, pastaj
shkronja 'x':
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a+x#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si vijon:
'a+x ! ! !'
Shembull
Tani autori e ka ekranizuar plus-in me
backslash. Tani shablloni i kërkimit duket
ashtu si duhet: shkronja 'a', pastaj plus
'+', pastaj shkronja 'x'.
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a\+x#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si vijon:
'! ax aax aaax'
Shembull
Në këtë shembull shablloni duket kështu: shkronja
'a', pastaj pikë '.', pastaj
shkronja 'x':
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a\.x#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si vijon:
'! abx azx'
Shembull
Në shembullin vijues autori harroi të ekranizojë pikën dhe nën regex ranë të gjitha nënvargjet, sepse pika e paekranizuar përfaqëson çdo simbol:
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a.x#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si vijon:
'! ! !'
Shembull
Kushtojini vëmendje faktit se nëse harroni backslash-in për pikën (kur ajo duhet të përfaqësojë vetveten) - kjo mund as që të mos vërehet:
<?php
preg_replace('#a.x#', '!', 'a.x'); // kthen '!', ashtu siç deshëm
?>
Vizualisht funksionon si duhet (pasi pika
përfaqëson çdo simbol, përfshirë edhe pikën e zakonshme
'.'). Por nëse ndryshohet vargu
në të cilin bëhen zëvendësimet - do ta shohim
gabimin tonë:
<?php
preg_replace('#a.x#', '!', 'a.x abx azx'); // kthen '! ! !', kurse pritej '! abx azx'
?>