⊗ppPmRgSHy 238 of 447 menu

Bindestreck inom uppsättningar i PHP reguljära uttryck

Bindestreck är också ett specialtecken inom [] (men utanför - inte). Om du behöver själva bindestrecket som ett tecken - placera det där, där det inte kommer att uppfattas som en avgränsare för en grupp.

Varför detta är viktigt: du kan skapa en grupp av tecken utan att märka det. Till exempel, så här - [:-@] - du tror att du väljer kolon, bindestreck och snabel-a, men i verkligheten blir det en grupp tecken mellan : och @. Denna grupp inkluderar följande tecken: :, ;, ?, <, =, >.

Var kommer de ifrån? Från ASCII-tabellen - kolon har ett lägre nummer än snabel-a - och därmed bildas en grupp. Det vill säga alla grupper bildas enligt ASCII-tabellen (om så önskas kan man använda detta).

Hur man hanterar detta: placera bindestreckstecknet där det definitivt inte kommer att uppfattas som ett grupptecken, till exempel i början eller slutet (det vill säga efter [ eller före ]).

Man kan också escapea bindestrecket - då kommer det att representera sig själv oavsett position. Till exempel, istället för [:-@] skriva [:\-@] - och då finns det ingen grupp, utan det blir tre tecken - kolon, bindestreck och snabel-a @.

Exempel

I följande exempel är sökmönstret så här: siffra 1, sedan bokstav från 'a' till 'z', sedan siffra 2:

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

Som ett resultat kommer följande att skrivas till variabeln:

'! 1-2 ! !'

Exempel

Låt oss nu escapea bindestrecket. Som ett resultat blir sökmönstret så här: siffra 1, sedan bokstaven 'a', eller bindestreck, eller bokstaven 'z', sedan siffra 2:

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

Som ett resultat kommer följande att skrivas till variabeln:

'! ! 1c2 !'

Exempel

Man kan helt enkelt flytta om bindestrecket, utan att escapea det:

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

Som ett resultat kommer följande att skrivas till variabeln:

'! ! 1c2 !'

Exempel

I följande exempel är sökmönstret så här: första tecknet är små bokstäver eller bindestreck '-', sedan två bokstäver 'x':

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

Som ett resultat kommer följande att skrivas till variabeln:

'! Axx ! @xx'

Exempel

I följande exempel är sökmönstret så här: första tecknet är små eller stora bokstäver eller bindestreck '-', sedan två bokstäver 'x':

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

Som ett resultat kommer följande att skrivas till variabeln:

'! ! ! @xx'

Exempel

Man kan placera bindestrecket mellan två grupper - där kommer det definitivt inte att skapa en ny grupp:

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

Som ett resultat kommer följande att skrivas till variabeln:

'! ! ! @xx'

Praktiska uppgifter

Given en sträng:

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

Hitta alla strängar enligt följande mönster: bokstaven 'x', stor eller liten bokstav eller bindestreck, bokstaven 'z'.

Given en sträng:

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

Hitta alla strängar enligt följande mönster: bokstaven 'x', sedan antingen dollar, bindestreck eller plus, sedan bokstaven 'z'.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa