⊗ppPmRgSHy 238 of 447 menu

Bindestrek inni sett i regulære uttrykk i PHP

Bindestrek - også et spesialtegn inni [] (men utenfor - ikke). Hvis du trenger selve bindestreken som et tegn - plasser den der den ikke vil bli oppfattet som en skilletegn for en gruppe.

Hvorfor dette er viktig: du kan lage en gruppe tegn uten å legge merke til det selv. For eksempel, sånn som dette - [:-@] - du tror at du velger kolon, bindestrek og krøllalfa, men egentlig får du en gruppe tegn mellom : og @. Denne gruppen inkluderer følgende tegn: :, ;, ?, <, =, >.

Hvor kommer de fra? Fra ASCII-tabellen - kolon har et lavere nummer enn krøllalfa - og det blir en gruppe. Det vil si at alle grupper blir dannet i henhold til ASCII-tabellen (om ønskelig kan man bruke dette).

Hvordan håndtere dette: plasser bindestrek-tegnet der det helt sikkert ikke vil bli oppfattet som et gruppetegn, for eksempel, i begynnelsen eller på slutten (altså etter [ eller før ]).

Man kan også escape bindestreken - da vil den representere seg selv uavhengig av posisjonen. For eksempel, i stedet for [:-@] skrive [:\-@] - og da vil det ikke være noen gruppe, men det vil være tre tegn - kolon, bindestrek og krøllalfa @.

Eksempel

I det følgende eksemplet er søkemønsteret som følger: siffer 1, deretter bokstav fra 'a' til 'z', deretter siffer 2:

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

Resultatet som skrives til variabelen er som følger:

'! 1-2 ! !'

Eksempel

La oss nå escape bindestreken. Resultatet blir at søkemønsteret er som følger: siffer 1, deretter bokstav 'a', eller bindestrek, eller bokstav 'z', deretter siffer 2:

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

Resultatet som skrives til variabelen er som følger:

'! ! 1c2 !'

Eksempel

Man kan ganske enkelt flytte bindestreken, uten å escape den:

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

Resultatet som skrives til variabelen er som følger:

'! ! 1c2 !'

Eksempel

I det følgende eksemplet er søkemønsteret som følger: første tegn er små bokstaver eller bindestrek '-', deretter to bokstaver 'x':

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

Resultatet som skrives til variabelen er som følger:

'! Axx ! @xx'

Eksempel

I det følgende eksemplet er søkemønsteret som følger: første tegn er små, store bokstaver eller bindestrek '-', deretter to bokstaver 'x':

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

Resultatet som skrives til variabelen er som følger:

'! ! ! @xx'

Eksempel

Man kan plassere bindestreken mellom to grupper - der vil den helt sikkert ikke lage en ny gruppe:

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

Resultatet som skrives til variabelen er som følger:

'! ! ! @xx'

Praktiske oppgaver

Gitt en streng:

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

Finn alle strenger som følger dette mønsteret: bokstav 'x', stor eller liten bokstav eller bindestrek, bokstav 'z'.

Gitt en streng:

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

Finn alle strenger som følger dette mønsteret: bokstav 'x', deretter enten dollartegn, eller bindestrek eller plusstegn, deretter bokstav 'z'.

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