⊗ppPmRgESCh 226 of 447 menu

Escapen van speciale tekens in PHP regex

Stel dat we willen dat een speciaal teken zichzelf vertegenwoordigt. Om dit te doen moet het worden geëscaped met behulp van een backslash (backslash). Laten we eens kijken naar voorbeelden.

Voorbeeld

In het volgende voorbeeld wilde de auteur van de regex dat het zoekpatroon er als volgt uitzag: letter 'a', dan een plus '+', dan letter 'x'. De auteur van de code heeft het teken '+' echter niet geëscaped, en daarom ziet het zoekpatroon er in werkelijkheid als volgt uit: letter 'a' een of meer keer, daarna letter 'x':

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

Als resultaat wordt het volgende in de variabele geschreven:

'a+x ! ! !'

Voorbeeld

Nu heeft de auteur de plus geëscaped met een backslash. Nu ziet het zoekpatroon eruit zoals bedoeld: letter 'a', dan plus '+', dan letter 'x'.

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

Als resultaat wordt het volgende in de variabele geschreven:

'! ax aax aaax'

Voorbeeld

In dit voorbeeld ziet het patroon er als volgt uit: letter 'a', dan een punt '.', dan letter 'x':

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

Als resultaat wordt het volgende in de variabele geschreven:

'! abx azx'

Voorbeeld

In het volgende voorbeeld vergat de auteur de punt te escapen en werden alle substrings geraakt door de regex, omdat een niet-geëscapte punt staat voor elk willekeurig teken:

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

Als resultaat wordt het volgende in de variabele geschreven:

'! ! !'

Voorbeeld

Let op dat als je de backslash voor de punt vergeet (wanneer deze zichzelf moet vertegenwoordigen) - dit kan zelfs onopgemerkt blijven:

<?php preg_replace('#a.x#', '!', 'a.x'); // retourneert '!', zoals we wilden ?>

Visueel werkt het correct (omdat de punt voor elk willekeurig teken staat, inclusief een gewone punt '.'). Maar als we de string veranderen waarin de vervangingen plaatsvinden - dan zien we onze fout:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // retourneert '! ! !', maar werd verwacht '! abx azx' ?>
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren