⊗ppPmRgESCh 226 of 447 menu

Escapovanie špeciálnych znakov v regulárnych výrazoch PHP

Predpokladajme, že chceme dosiahnuť, aby špeciálny znak predstavoval sám seba. Na to je potrebné ho escapovať pomocou spätného lomítka. Pozrime sa na príklady.

Príklad

V nasledujúcom príklade autor regulárneho výrazu chcel, aby vyhľadávací vzor vyzeral takto: písmeno 'a', potom plus '+', potom písmeno 'x'. Avšak, autor kódu neescapoval symbol '+', a preto vyhľadávací vzor v skutočnosti vyzerá takto: písmeno 'a' jeden alebo viackrát, potom písmeno 'x':

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

Výsledkom zapísaným do premennej bude:

'a+x ! ! !'

Príklad

Teraz autor escapoval plus spätným lomítkom. Teraz vyhľadávací vzor vyzerá tak, ako má: písmeno 'a', potom plus '+', potom písmeno 'x'.

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

Výsledkom zapísaným do premennej bude:

'! ax aax aaax'

Príklad

V tomto príklade vzor vyzerá takto: písmeno 'a', potom bodka '.', potom písmeno 'x':

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

Výsledkom zapísaným do premennej bude:

'! abx azx'

Príklad

V nasledujúcom príklade autor zabudol escapovať lomítko a pod regulárny výraz spadli všetky podreťazce, pretože neescapovaná bodka predstavuje akýkoľvek znak:

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

Výsledkom zapísaným do premennej bude:

'! ! !'

Príklad

Všimnite si, že ak zabudnete spätné lomítko pre bodku (keď by mala predstavovať samu seba) - je možné si toho ani nevšimnúť:

<?php preg_replace('#a.x#', '!', 'a.x'); // vráti '!', ako sme chceli ?>

Vizuálne to funguje správne (pretože bodka predstavuje akýkoľvek znak, vrátane obyčajnej bodky '.'). Ale ak zmeníme reťazec, v ktorom sa vykonávajú náhrady - uvidíme našu chybu:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // vráti '! ! !', ale očakávalo sa '! abx azx' ?>
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť