⊗ppPmRgESCh 226 of 447 menu

Escaping av spesialtegn i regulære uttrykk i PHP

Anta at vi ønsker å gjøre slik at spesialtegnet representerer seg selv. For å gjøre dette må det escapes med en omvendt skråstrek. La oss se på eksempler.

Eksempel

I følgende eksempel ønsket forfatteren av det regulære uttrykket at søkemønsteret skulle se slik ut: bokstaven 'a', deretter plusstegn '+', deretter bokstaven 'x'. Imidlertid escapet ikke kodeforfatteren tegnet '+', og derfor ser søkemønsteret faktisk slik ut: bokstaven 'a' en eller flere ganger, deretter bokstaven 'x':

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

Resultatet som skrives til variabelen blir følgende:

'a+x ! ! !'

Eksempel

Nå har forfatteren escapet plusstegnet med en omvendt skråstrek. Nå ser søkemønsteret slik ut, som det skal: bokstaven 'a', deretter plusstegn '+', deretter bokstaven 'x'.

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

Resultatet som skrives til variabelen blir følgende:

'! ax aax aaax'

Eksempel

I dette eksemplet ser mønsteret slik ut: bokstaven 'a', deretter punktum '.', deretter bokstaven 'x':

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

Resultatet som skrives til variabelen blir følgende:

'! abx azx'

Eksempel

I følgende eksempel glemte forfatteren å escape skråstreken, og det regulære uttrykket traff alle delstrenger, siden en uescaped punktum representerer et hvilket som helst tegn:

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

Resultatet som skrives til variabelen blir følgende:

'! ! !'

Eksempel

Vær oppmerksom på at hvis du glemmer den omvendte skråstreken for punktum (når den skal representere seg selv) - kan dette være vanskelig å legge merke til:

<?php preg_replace('#a.x#', '!', 'a.x'); // returnerer '!', som vi ønsket ?>

Visuelt fungerer det riktig (siden punktum representerer et hvilket som helst tegn, inkludert et vanlig punktum '.'). Men hvis strengen der erstatninger skjer endres - vil vi se vår feil:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // returnerer '! ! !', mens det forventedes '! abx azx' ?>
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis