Kód:
<?php
$slova=explode(" ", $slovo);//rozdeli hladany vyraz po slovach cez medzery
$spolu=count($slova); //spocita slova
$prikaz="";
for ($i=0; $i<$spolu; $i++){
//vytvori prikaz pre vyhladavanie pre presny pocet slov
$prikaz.="text like \"%".$slova[$i]."%\" || nadpis like \"%".$slova[$i]."%\"";
if (($i+1)!=$spolu)$prikaz.=" || ";
}
$vysledok=mysql_query("select text, nadpis from clanky where ".$prikaz." "); //vybet z db
if (mysql_num_rows($vysledok)=="0")echo "Hladanému výrazu nevyhovuje žiaden článok!"; //ziaden clanok nevyhovuje
else{
while ($zaznam=MySQL_Fetch_Array($vysledok, MYSQL_NUM)){//pre jednotlive vybery urobi vypis
$zaznam[0]=str_replace(" ", " ", strip_tags(syntax($zaznam[0]))); //nahradi viac medzier jednou
$pozicia="99999999999999";//definovanie maximalnej pozicie(cim vecsie cislo tym lepsie)
for ($i=0; $i<$spolu; $i++){//zistenie ktore hladane slovo je v texte prve
$strp=strpos($zaznam[0], $slova[$i]);
if ($strp<$pozicia && $strp!==false)$pozicia=$strp;
}
if(substr($zaznam[0], $pozicia, 300)!==false)$zaznam[0]=substr($zaznam[0], $pozicia, 300);//u mna hlada aj v nadpise a ten zobrazuje cely, tak pokial sa nachadza v hladane slovo aj v texte zobrazi ho od toho slova a to presne 300 znakov(namiesto 300 znakov si mozes dat aj ine)
else $zaznam[0]=substr($zaznam[0], 0, 300);//pokial slovo nie je v texte zobrazi prvych 300 znakov(namiesto 300 znakov si mozes dat aj ine)
for ($i=0; $i<$spolu; $i++){
//samotne nahradenie slova zvyraznenym slovom...pri verzii php 5 sa da pouzit aj str_ireplace, inak str_replace(lepise bude CSS ako <font>)
$phpversion = substr(phpversion(), 0, 3);
if($phpversion >= 5.0){
$zaznam[1]=str_ireplace(htmlspecialchars($slova[$i]), "<span style=\"color:red;\">".strtoupper(htmlspecialchars($slova[$i]))."</span>", $zaznam[1]);
$zaznam[0]=str_ireplace($slova[$i], "<span style=\"color:red;\>".strtoupper($slova[$i])."</span>", $zaznam[0]);
}
else{
$zaznam[1]=str_replace(htmlspecialchars($slova[$i]), "<span style=\"color:red;\>".strtoupper(htmlspecialchars($slova[$i]))."</span>", $zaznam[1]);
$zaznam[0]=str_replace($slova[$i], "<span style=\"color:red;\>".strtoupper($slova[$i])."</span>", $zaznam[0]);
}
}
echo "<a href= \"index.php?clanok=1\" title=\"Zobraziť celý článok\" class=\"head\">".$zaznam[2]."</a><br />";//zobrazi nadpis
echo "...".$zaznam[1]."...<br /><br />";//zobrazi text
}
?>
okomentoval som kazdy krok, snad pomoze
keby cosi nebolo jasne sa este ozvi