Autor Zpráva
peteo
Profil
prosím:

mám na stránkach Heuréka urobené vlastné vyhľadávanie, kde je pri vyhľadávaní ignorovaná veľkosť písmen a diakritika.
Potreboval by som, aby pri vylistovaní výsledkov bol hľadaný text v bloku (alebo inak zvýraznený), aby hľadajúci vedel, že práve pre tento (nájdený) text bol výsledok vyhodnotený (rozdiel medzi súd, suď, sud, ale pri zadaní ktoréhokoľvek z týchto slov vyhodí všetky spomínané - a tie potrebujem zvýrazniť).

ďakujem.
SwimX
Profil
peteo:
řekněme, že text který se vypisuje taháš z DB a hledané slov más v nějkaé POST proměnné:
while($row = mysql_fetch_assoc($result)){
  echo str_replace($_POST['hledane'], "<span class='red'>{$_POST['hledane']}</span>", $row['text']);
}

neřeší to ale i slova lišící se v diakritice, jak máš udělané hledání, že se hledá i v "podobných" slovech? Stačilo by to zde aplikovat ;)
peteo
Profil
problém, neťahám z databáze.
jedná sa o výcuc z txt súboru, mám uviesť celý kript?
peteo
Profil
je to celý script:

<?
$stare=array('á','ä','ą','â','ă','å','à','æ','&acirc;','&agrave;','&aring;','&aelig;','ă','à','â','ã','å','æ','č','ć','ç','&ccedil;','ç','ď','đ','đ','é','ę','ë','ě','è','ê','&egrave;','&ecirc;','ę','ě','ê','é','ë','í','î','ì','ï','ì','í','î','ï','&igrave;','&icirc;','&iuml;','ľ','ĺ','ň','ń','ñ','&ntilde;','ñ','ó','ô','ö','ő','ò','õ','ő','ó','ô','õ','ö','&ouml;','ř','ŕ','š','ś','ť','ţ','ţ','ú','ů','ű','ù','û','ü','ű','ù','û','ü','&uuml;','ý','ž','ź','y','ý','<','>','"','Ž');
$nove=array('a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','c','c','c','c','c','d','d','d','e','e','e','e','e','e','e','e','e','e','e','e','e','i','i','i','i','i','i','i','i','i','i','i','l','l','n','n','n','n','n','o','o','o','o','o','o','o','o','o','o','o','o','r','r','s','s','t','t','t','u','u','u','u','u','u','u','u','u','u','u','y','z','z','i','i','.','.','.','z');
$book=Array("a","b","c","d","e","f","g","h","ch","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","!","0-9");

$dotaz = $_GET["dotaz"];
$slovo_pocet = substr_count($dotaz," ")+1;
$slovo_dlzka = strlen($dotaz);
$stop="konieczaznamu";
echo "Hľadaný výraz: ";
echo $dotaz;
$pocet=0;
$dotaz_ci=strtolower($dotaz);
$slovo = explode(" ", $dotaz_ci);
for ($j=0; $j<$slovo_pocet; $j++) {
      $slovo_ci[$j] = str_replace($stare,$nove,$slovo[$j]);
}
if ($volba == "") {
$volba = "1";
}
if ($slovo_dlzka== "1") {
     echo "<br><br>Príliš krátky výraz pre vyhľadávanie.<br><br>";
     echo "Pozri <a href='help.htm'>ako na to</a>.";
     $volba = "";
}
if ($dotaz <> "") {
if ($volba == "1") {
for ($i=0; $i<29; $i++) {
  $soubor=fopen($book[$i], "r");
  $text="";
  while ($text<>$stop) {
    $text=fgets($soubor);
    $texta=strtolower($text);
    $text_ci = str_replace($stare,$nove,$texta);
    $test_komplet=0;
    for ($j=0; $j<$slovo_pocet; $j++) {
      $test=strpos($text_ci,$slovo_ci[$j]);
      if ($test === false) {}
      else {
      $test_komplet++;
      }
    }
    $test=($test_komplet==($slovo_pocet));
    if ($test === false) {
      echo "";
    }
    else {
      echo "<hr><h1><span>";
      echo $text;
      $pocet++;
      if (($pocet/50)==(floor($pocet/50))) {
      echo "<center><hr><script type='text/javascript' charset='utf-8' src='http://sk.static.etargetnet.com/generic/advert.php?g=ref:17388,area:234x60,tabl:3,n:2,js:1,target:_new,logo:0,border_color:ffffff,background_color:ffffff,title_color:0066d5,title_underline:1,text_color:000000,font:tahoma' ></script></center>";
    }
    }
  }
  fclose($soubor);
}
}
if ($volba == "2") {
for ($i=0; $i<29; $i++) {
  $soubor=fopen($book[$i], "r");
  $text="";
  while ($text<>$stop) {
    $text=fgets($soubor);
    $texta=strtolower($text);
    $text_ci = str_replace($stare,$nove,$texta);
    $test_komplet=0;
    for ($j=0; $j<$slovo_pocet; $j++) {
      $test=strpos($text_ci,$slovo_ci[$j]);
      if ($test === false) {}
      else {
      $test_komplet++;
      }
    }
    $test=($test_komplet>"0");
    if ($test === false) {
      echo "";
    }
    else {
      echo "<hr><h1><span>";
      echo $text;
      $pocet++;
      if (($pocet/50)==(floor($pocet/50))) {
      echo "<center><hr><script type='text/javascript' charset='utf-8' src='http://sk.static.etargetnet.com/generic/advert.php?g=ref:17388,area:234x60,tabl:3,n:2,js:1,target:_new,logo:0,border_color:ffffff,background_color:ffffff,title_color:0066d5,title_underline:1,text_color:000000,font:tahoma' ></script></center>";
    }
    }
  }
  fclose($soubor);
}
}
echo "<hr><br>";
if ($pocet==0){
echo "<br>Hľadanie ukončené, nenájdený ani jeden záznam.";
echo "<br><br>";
echo "Skúste zmeniť zadanie.<br>Zadajte len časť slova, ktoré hľadáte.";
echo "<br><br>Pozri <a href='help.htm'>ako na to</a>.";
}
if ($pocet==1){
echo "Hľadanie ukončené, nájdený ";
}
if ($pocet>1 and $pocet<5){
echo "Hľadanie ukončené, nájdené ";
}
if ($pocet>4) {
echo "Hľadanie ukončené, nájdených ";
}
if ($pocet<>0) {
echo $pocet;
}
if ($pocet==1){
echo " záznam";
}
if ($pocet>1 and $pocet<5){
echo " záznamy";
}
if ($pocet>4) {
echo " záznamov";
}
}
else {
echo "Nebol zadaný žiaden výraz pre vyhľadávanie.";
echo "<br><br>Pozri <a href='help.htm'>ako na to</a>.";
}


?>


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: