Avatar billede laksen Nybegynder
01. juni 2006 - 23:43 Der er 3 kommentarer

preg_replace, ændre tegn men ikke tegn inde i tags

Hejsa eksperter

Jeg har ikke den store viden om regular expression men har da rodet lidt med det før.

Et simpelt eksempel kan illustrere mit problem:
$string = "<u>nu skal den gøre alle uer fede men kun dem uden for tags</u>";
$string = preg_replace("/(>[\w ]*)(u)([\w ]*<\/?)/e","'\\1'.'<b>'.'\\2'.'</b>'.'\\3'",$string);
echo $string;

Funktionen her putter kun <b></b> om det sidste u - ikke de to første.

Hvordan får jeg funktionen til at matche alle 3 u'er i strengen - ikke kun det sidste u?

Jeg har simplificeret eksemplet meget. Det skal i min givne situation kunne undgå alle slags tags og kunne matche et hvilket som helst tegn. Men får jeg det til at virke bare som i eksemplet har jeg en tro på at jeg kan tilpasse det selv bagefter :)
Avatar billede tdafoobar Nybegynder
02. juni 2006 - 00:00 #1
ville det ikke være nemmere om du først lavede et match på data mellem de 2 <ul> tags, og bagefter lavede str_replace på dine u'er ?-)
Avatar billede tdafoobar Nybegynder
02. juni 2006 - 00:05 #2
preg_replace("/<ul>(.*?)<\/ul>/e",str_replace("u","<b>u</b>","\\1"),$string)

medmindre dit formål ikke er at gøre alle u'erne fede :p
Avatar billede laksen Nybegynder
02. juni 2006 - 08:35 #3
Jeg prøver lige at lege lidt med begge dine løsningsforslag over weekenden, når jeg har tid.

Vender tilbage derefter.

Tak indtil nu i hvert fald :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester