Reticent Skrevet 7. juni 2006 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; } ?>
MC2 Skrevet 7. juni 2006 Skrevet 7. juni 2006 (endret) Erm.. kanskje ikke... Endret 7. juni 2006 av MC2
stiber Skrevet 7. juni 2006 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.
Reticent Skrevet 7. juni 2006 Forfatter 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
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å