⊗ppPmRgESCh 226 of 447 menu

Ekranowanie znaków specjalnych w regex PHP

Załóżmy, że chcemy sprawić, aby znak specjalny oznaczał sam siebie. W tym celu należy go ekranować za pomocą ukośnika odwrotnego. Przyjrzyjmy się przykładom.

Przykład

W następującym przykładzie autor wyrażenia regularnego chciał, aby wzorzec wyszukiwania wyglądał następująco: litera 'a', następnie plus '+', następnie litera 'x'. Jednakże autor kodu nie wyekranował symbolu '+' i dlatego wzorzec wyszukiwania w rzeczywistości wygląda tak: litera 'a' jeden lub więcej razy, potem litera 'x':

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

W rezultacie do zmiennej zapisze się następująco:

'a+x ! ! !'

Przykład

A teraz autor wyekranował plus ukośnikiem odwrotnym. Teraz wzorzec wyszukiwania wygląda tak, jak należy: litera 'a', następnie plus '+', następnie litera 'x'.

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

W rezultacie do zmiennej zapisze się następująco:

'! ax aax aaax'

Przykład

W tym przykładzie wzorzec wygląda tak: litera 'a', następnie kropka '.', następnie litera 'x':

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

W rezultacie do zmiennej zapisze się następująco:

'! abx azx'

Przykład

W następnym przykładzie autor zapomniał wyekranować ukośnik i pod wyrażenie regularne trafiły wszystkie podciągi, ponieważ niewyekranowana kropka oznacza dowolny znak:

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

W rezultacie do zmiennej zapisze się następująco:

'! ! !'

Przykład

Zwróć uwagę, że jeśli zapomnisz o ukośniku odwrotnym dla kropki (kiedy powinna oznaczać samą siebie) - można tego nawet nie zauważyć:

<?php preg_replace('#a.x#', '!', 'a.x'); // zwróci '!', tak jak chcieliśmy ?>

Wizualnie działa poprawnie (ponieważ kropka oznacza dowolny znak, w tym również zwykłą kropkę '.'). Ale jeśli zmienimy ciąg, w którym odbywają się zamiany - zobaczymy nasz błąd:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // zwróci '! ! !', a oczekiwano '! abx azx' ?>
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć