Reticent Skrevet 7. juni 2006 Del Skrevet 7. juni 2006 Jeg har laget et søkesystem på blogen min hvor jeg i søkeresultatene setter en annen bakgrunnsfarge bak treffene. Søker man for eksempel på "eple" vil man i søkeresultatene få: <span style="background-color: #FF0000;">eple</span> Problemet kommer når det jeg søker igjennom er en tekst som også inneholder html-tager. Jeg vil foreksempel ikke at søkeord som befinner seg inni en url skal byttes ut. Jeg vil med andre ord ignorere alt som står innenfor < >. Er det noen som har noen ideer på hvordan dette kan gjøres? Dette er funksjonen jeg benytter, jeg har forenklet den litt. <?php function highlight($text, $ord) { $start_tag = '<span style="background-color:#FF0055;">'; $end_tag = '</span>'; $resultat = $start_tag . $ord . $end_tag; $text = str_replace($ord, $resultat, $text); return $text; } ?> Lenke til kommentar
MC2 Skrevet 7. juni 2006 Del Skrevet 7. juni 2006 (endret) Erm.. kanskje ikke... Endret 7. juni 2006 av MC2 Lenke til kommentar
stiber Skrevet 7. juni 2006 Del Skrevet 7. juni 2006 Prøv dette: <?php function highlight($text, $ord) { $start_tag = '<span style="background-color:#FF0055;">'; $end_tag = '</span>'; $ord = preg_quote($ord,'/'); return = preg_replace("/$ord(?![^<]*>)/i","$start_tag\\0$end_tag",$text); } ?> Den er i tilleg case insensitive. Lenke til kommentar
Reticent Skrevet 7. juni 2006 Forfatter Del Skrevet 7. juni 2006 (endret) Den fungerer kjempebra og gjør det samme som jeg før brukte ca 20 linjer på å utføre. Takker så meget. Endret 7. juni 2006 av Mizt Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå