Gå til innhold

Ignorere tekst i html-tager


Anbefalte innlegg

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
Videoannonse
Annonse

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...