Hallo zusammen,
ich habe ein Problem,
ich will per PHP den gesuchten Text in einem text "highlighten".
das ist so weit kein Problem.
Nun habe ich aber einen Suchbegriff mit zwei "Worten": z.B:"vari li"
Der Text sieht beispielhalber so aus: "Variable light"
Den Suchstring will ich per "<span class="highlight">SUCHE</span> hervorheben.
Dies wollte ich so bewerkstelligen:
$userquery = "vari li";
$text = "variable lighte";
function highlight($userquery,$text){
foreach (explode(" ", utf8_decode($userquery)) as $query) {
if (preg_match("/" . $query . "/i", $text, $match)) {
$text = str_replace($match[0], "<span class='highlight'>" . $match[0] . "</span>", $text);
}
}
}
echo highlight($userquery,$text);
nun bekomme ich als Antwort das hier:
<span class='high<span class='highlight'>li</span>ght'>vari</span>able <span class='highlight'>li</span>ghte
Und wie man sieht wurde da der HTML Code falsch ersetzt.
Wie kann man es verhindern, dass der "highlightecode" mit ersetzt wird?
Ich kann per Regex meinem Wissen nach nicht so ersetzen, dass nur das was nicht innerhalb eines Span ist ersetzt wird? Oder doch? Gibts ne alternative Lösung?
DANKE im Voraus!