Řešení je pěkné, ale proč to dělat (v drahém) procesorovém čase serveru, když to může udělat klient v JavaScriptu? (resp. kombinace JavaScript a PHP,Python,P**l) Vyřešíte si tím problémy s HTML tagy, a další.
Podívejte se na www.e-skaut.cz, tam je už to vyřešené včetně odstraňování češtiny, apod.
--VěrošPS: Nejsem autorem www.e-skaut.cz, ale jeho řešení znám, protože vychází z mého :-)
K přečtení bych doporučoval i můj starší článek Zvýraznění výsledků vyhledávání. Je psán sice jenom pro Google, ale zohledňuje i většinu vyhledávacích operátorů, frázemi počínaje a hledáním celých slov konče. Na rozdíl od autorova kódu také zohledňuje text v HTML atributech a značky, ve kterých se zvýrazňovat nedá (textarea, option). Odkazovaný článek také ukazuje, jak zvýrazňování použít univerzálně pro jakékoliv texty (třeba i statické stránky). Dozvíte se také, že existuje funkce urldecode :-).
Stejně jako integer bych doporučoval nepoužívat značku font s inline stylem, ale raději span se třídou.
<a title="neco hledany text neco">kuk</a>
po nahrazeni vznikne:
<a title="neco <font>hledany</font> <font>text</font> neco">kuk</a>
Nahrazoval bych to spis:
$words = array("hledane", "slovo");
//udelat si pole RE a jejich nahrazeni
foreach ($words as $word) {
$patterns[] = "/($word)(?![^<]*?>)/";
$replaces[] = "<font>$1</font>";
}
//ohajlahtovat text
$hlText = preg_replace($patterns, $replaces, $text);
A taky bych nahradil RE pri odstranovani www:
//aby se www odstranovalo pouze kdyz jim text $host['host'] bude zacinat
$host = eregi_replace("^www\.","",$host['host']);
$url_referer
skutečně obsahuje otazník a zcela zbytečně je použita funkce stripos, která je pouze v PHP 5.