⊗ppPmRgESCh 226 of 447 menu

Екранирање на специјални знаци во регуларни изрази во PHP

Да претпоставиме дека сакаме да направиме специјалниот знак да го означува самиот себе. За ова треба да го екранираме со помош на обратна коса црта. Ајде да погледнеме на примери.

Пример

Во следниот пример авторот на регуларниот израз сакал, шablonoт за пребарување да изгледа вака: буква 'a', па потоа плус '+', па потоа буква 'x'. Сепак, авторот на кодот не го екранирал симболот '+' и затоа шablonoт за пребарување всушност изгледа вака: буква 'a' еднаш или повеќе пати, па потоа буква 'x':

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

Како резултат во променливата ќе се запише следново:

'a+x ! ! !'

Пример

А сега авторот го екранирал плус со обратна коса црта. Сега шablonoт за пребарување изгледа како што треба: буква 'a', па потоа плус '+', па потоа буква 'x'.

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

Како резултат во променливата ќе се запише следново:

'! ax aax aaax'

Пример

Во овој пример шablonoт изгледа вака: буква 'a', па потоа точка '.', па потоа буква 'x':

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

Како резултат во променливата ќе се запише следново:

'! abx azx'

Пример

Во следниот пример авторот заборавил да ја екранира косата црта и под регуларниот израз попаднаа сите поднизи, бидејќи неекранираната точка означува кој било знак:

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

Како резултат во променливата ќе се запише следново:

'! ! !'

Пример

Обрнете внимание на тоа дека ако заборавите обратна коса црта за точка (кога таа треба да го означува самиот себе) - ова може дури и да не се забележи:

<?php preg_replace('#a.x#', '!', 'a.x'); // ќе врати '!', како што сакавме ?>

Визуелно работи правилно (бидејќи точката означува кој било знак, вклучувајќи ја и обичната точка '.'). Но, ако ја смениме низата, во која се случуваат замени - ќе ја видиме нашата грешка:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // ќе врати '! ! !', а се очекуваше '! abx azx' ?>
Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј