Gå til innhold

Avansert replace (RegEX)


Anbefalte innlegg

Skrevet (endret)

Hei!

 

Jeg trenger hjelp med preg_replace.

Jeg ønsker at aller "a"'er skal byttes ut med "b"'er så lenge de ikke står i mellom "<" og ">". Går dette ann med en enkel regex, eller må man gå grundere til verks? :hmm:

 

Takk!

 

EDIT: Leif

Endret av Judofyr
Videoannonse
Annonse
Skrevet

Hallo Judofyr,

jeg skal gi deg et lite triks når du sliter litt med en slik regex. I steden for å sitte lenge å finne en optimal kombinasjon, ta en kikk på funksjonen preg_replace_callback().

 

Ved å bruke den funksjonen kan du enkelt hente ut alt mellom < og > og sende det til en callback funksjon som der bytter ut a med b. F.eks.:

 

$string = "abcd <abacada> abcd <abacada>";

function bytt_a_med_b($str) {

return preg_replace("/a/", "b", "<{$str[1]}>");

}

echo htmlentities(preg_replace_callback("/\<(.*?)\>/", bytt_a_med_b, $string));

// output: abcd <bbbcbdb> abcd <bbbcbdb>

 

Glem ikke at et for avansert regex ikke nødvendigvis blir mindre krevende enn å kjøre en liten callback ;)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...