⊗ppPmRgSHy 238 of 447 menu

Bindestreg inde i sæt i PHP regulære udtryk

Bindestreg - er også et specialtegn inde i [] (men udenfor - ikke). Hvis du har brug for selve bindestregen som symbol - så placer den der, hvor den ikke vil blive opfattet som en gruppeseparator.

Hvorfor dette er vigtigt: du kan utilsigtet lave en gruppe af symboler. For eksempel, sådan her - [:-@] - du tror, at du vælger kolon, bindestreg og at-tegn (@), men i virkeligheden får du en gruppe af symboler mellem : og @. Denne gruppe inkluderer følgende symboler: :, ;, ?, <, =, >.

Hvor kommer de fra? Fra ASCII-tabellen - kolon har et nummer, der er lavere end at-tegn (@) - og det resulterer i en gruppe. Det vil sige, at alle grupper opstår baseret på ASCII-tabellen (hvis man ønsker det, kan man bruge dette til sin fordel).

Hvordan man håndterer dette: placer bindestreg-symbolet et sted, hvor det helt sikkert ikke vil blive opfattet som et gruppesymbol, for eksempel i starten eller slutningen (altså efter [ eller før ]).

Man kan også escape bindestregen - så vil den altid repræsentere sig selv, uanset position. For eksempel, i stedet for [:-@] skrive [:\-@] - og så vil der ikke være nogen gruppe, men der vil være tre symboler - kolon, bindestreg og at-tegn @.

Eksempel

I det følgende eksempel er søgemønsteret som følger: ciffer 1, derefter bogstav fra 'a' til 'z', derefter ciffer 2:

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[a-z]2#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! 1-2 ! !'

Eksempel

Lad os nu escape bindestregen. Resultatet bliver at søgemønsteret er som følger: ciffer 1, derefter bogstav 'a', eller bindestreg, eller bogstav 'z', derefter ciffer 2:

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[a\-z]2#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! 1c2 !'

Eksempel

Man kan blot flytte bindestregen uden at escape den:

<?php $str = '1a2 1-2 1c2 1z2'; $res = preg_replace('#1[az-]2#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! 1c2 !'

Eksempel

I det følgende eksempel er søgemønsteret som følger: første symbol er enten små bogstaver eller bindestreg '-', derefter to bogstaver 'x':

<?php $str = 'axx Axx -xx @xx'; $res = preg_replace('#[a-z-]xx#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! Axx ! @xx'

Eksempel

I det følgende eksempel er søgemønsteret som følger: første symbol er enten små, store bogstaver eller bindestreg '-', derefter to bogstaver 'x':

<?php $str = 'axx Axx -xx @xx'; $res = preg_replace('#[a-zA-Z-]xx#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! ! @xx'

Eksempel

Man kan placere bindestregen mellem to grupper - der vil den helt sikkert ikke skabe en yderligere gruppe:

<?php $str = 'axx 9xx -xx @xx'; $res = preg_replace('#[a-z-0-9]xx#', '!', $str); ?>

Resultatet i variablen vil være følgende:

'! ! ! @xx'

Praktiske opgaver

Givet en streng:

<?php $str = 'xaz xBz xcz x-z x@z'; ?>

Find alle strenge efter følgende mønster: bogstav 'x', stort eller småt bogstav eller bindestreg, bogstav 'z'.

Givet en streng:

<?php $str = 'xaz x$z x-z xcz x+z x%z x*z'; ?>

Find alle strenge efter følgende mønster: bogstav 'x', derefter enten dollar, eller bindestreg eller plus, derefter bogstav 'z'.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis