Zoekwoord highlighten
Zaterdag 14 Mei, 2005Om in een lijst van zoekresultaten het zoekwoord een andere stijl te geven, volstaat een klein stukje code. Als je stukje tekst dat je wil vervangen $string is:
str_replace() :
$string = str_replace($zoekwoord,'<span class="highlight">' . $zoekwoord . '</span>',$string);
Probleem is echter dat deze functie case sensitive is. Dat betekent, dat als ik ga zoeken op sint-truiden zal highlighten, en niet Sint-Truiden. Bovendien mag je originele tekst ook niet vervangen worden door de schrijfwijze (hoofdletters) van het zoekwoord.
De functie str_ireplace(); is case-insensitive, maar is pas vanaf PHP 5 beschikbaar. Deze functie gebruiken zou ook niet de oplossing zijn…
Een zoekopdracht naar sint-Truiden zal je teksten wel highlighten, maar tegelijk ook Sint-Truiden vervangen door sint-Truiden.
Hiervoor gebruik je dus best een preg_replace() functie, met een pattern van je zoekopdracht:
preg_replace();
$string = preg_replace('/(' . $zoekwoord . ')/i', "<span class="highlight">\${1}</span>",$string);
Update: een uitgewerkt voorbeeldje vind je op Voetbal Belgiƫ
Veel succes!