Hi everyone! I'm the author of code.mu :)
I'd love to chat with my non-Russian audience. I'm looking for your feedback on the site and the translation quality. Let's chat:)
⊗ppPmRgESCh 226 of 447 menu
◀ ▶

Escaparea caracterelor speciale în expresiile regulate PHP

Să presupunem că vrem ca un caracter special să reprezinte el însuși. Pentru aceasta acesta trebuie escapat folosind backslash-ul. Să vedem câteva exemple.

Exemplul

În următorul exemplu, autorul expresiei regulate a vrut ca șablonul de căutare să arate astfel: litera 'a', apoi plus '+', apoi litera 'x'. Cu toate acestea, autorul codului nu a escapat simbolul '+' și de aceea șablonul de căutare, în realitate, arată astfel: litera 'a' de una sau mai multe ori, apoi litera 'x':

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a+x#', '!', $str); ?>

Ca rezultat, în variabilă se va scrie următorul text:

'a+x ! ! !'

Exemplul

Acum autorul a escapat plusul cu backslash. Acum șablonul de căutare arată așa cum trebuie: litera 'a', apoi plus '+', apoi litera 'x'.

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a\+x#', '!', $str); ?>

Ca rezultat, în variabilă se va scrie următorul text:

'! ax aax aaax'

Exemplul

În acest exemplu, șablonul arată astfel: litera 'a', apoi punctul '.', apoi litera 'x':

<?php $str = 'a.x abx azx'; $res = preg_replace('#a\.x#', '!', $str); ?>

Ca rezultat, în variabilă se va scrie următorul text:

'! abx azx'

Exemplul

În următorul exemplu, autorul a uitat să escape slash-ul și sub expresia regulată au căutat toate subșirurile, deoarece punctul neescapat reprezintă orice caracter:

<?php $str = 'a.x abx azx'; $res = preg_replace('#a.x#', '!', $str); ?>

Ca rezultat, în variabilă se va scrie următorul text:

'! ! !'

Exemplul

Atenție la faptul că dacă uitați backslash-ul pentru punct (când acesta ar trebui să reprezinte el însuși) - acest lucru s-ar putea să nu fie observat:

<?php preg_replace('#a.x#', '!', 'a.x'); // va returna '!', așa cum ne-am dorit ?>

Vizual, funcționează corect (deoarece punctul reprezintă orice caracter, inclusiv un punct obișnuit '.'). Dar dacă schimbăm șirul, în care se fac înlocuirile - ne vom vedea eroarea:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // va returna '! ! !', dar se aștepta '! abx azx' ?>
← →
↑
Română▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge