• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Trefferanzahl bei Suchskript rausfinden

Status
Für weitere Antworten geschlossen.

Cujo

Neues Mitglied
Hallo,

ich habe im Internet ein Suche-Skript gefunden, das ich gerne anpassen würde:
PHP:
$pattern =''; 
$array_all=''; 
define ("tube", true); 
//set_time_limit(30);       //optional; zum verlaengern der Script Laufzeit 
$pattern = strip_tags($_GET['wordpas']); 
$pattern = preg_replace('/[\/\(\)\{\[\]\}\#\*\^\<\>\=\?\*\.\,\;\!\"\'\|\\\]/U', '',$pattern); 
$pattern = htmlentities(trim($pattern)); 

include('confic_.php');   
   
  //Anzahl der zu erkennenden Zeichen; optional 30 ,2 
  $patternlaenge=strlen($pattern); 
  switch ($patternlaenge) 
  {     
    case 0: 
      echo "<div class=\"out\">Bitte geben Sie einen Suchbegriff ein.<br /><br /><br /><br /><br /></div>"; 
      echo "<div class=\"adress\"><a href=\"http://web-script-tube.de\" target=\"_blank\"><i> By Web-Script-Tube</i></a></div>";break; 
       
    case $patternlaenge<3: echo "Bitte geben Sie mindestens 3 Zeichen ein.";break; 
    case $patternlaenge>30: echo "Bitte geben Sie maximal 30 Zeichen ein.";break; 
   
    default:        
       for($i=0;$i<=count($array_all);$i++) 
       { 
       $site = ''; 
       $site = file_get_contents($array_all[$i]);                     
       preg_match('/<head>(.*)<\/head>/is',$site, $alL_meta);    
         if (stristr($alL_meta[1], "utf-8"))  
         { 
         $alL_meta[1] = utf8_decode($alL_meta[1]);  
         $site = utf8_decode($site);  
         } 
          else 
          { 
          $site  =html_entity_decode($site);  
          } 
                            
       $site = preg_replace('/<script[^>]*>(.*?)<\/script[^>]*>/si', ' ', $site); 
       $site = preg_replace('/<!\-\-(.*?)\-\->/', '', $site);           
       $site = htmlentities(strip_tags($site)); 
       $str_true = preg_match_all("/\b$pattern\b.+/is", $site, $hit);  
        
          if (($str_true==true)  or (!empty($hit[0][0])) )                           
          {  
          $string   = ''; 
          $string_  = ''; 
          $resulut  = ''; 
          $count_number=''; 
          //laenge der Verweise; optional 200 
          $string   = substr($hit[0][0], '0', '200');                                                                   
          $string_  = explode(" ", $string);                                               
             if ($string_[1] == true)  
             { 
             $count_number = count($string_); 
             $body_text =''; 
               for($h = 0; $h < $count_number-1; $h++) 
               { 
               $body_text[$h] = $string_[$h]; 
               } 
             $resulut = implode(" ", $body_text); 
              
             //Beginn von nicht entfernten Sonderzeichen; kann erweitert werden 
             $zeichen_in  = array("/&quot;/", "/&amp;/", "/&nbsp;/", "/nbsp;/", "/quot;/"); //in 
             $zeichen_out = array(""        , ""       , ""        , ""       , ""       ); //out             
             $resulut = preg_replace($zeichen_in, $zeichen_out,$resulut); 
             //Ende 
              
             $out_words=''; 
             preg_match_all("/\b$pattern\b/i", $site, $hit); 
             preg_match_all("/\b$pattern\b/i", $resulut, $out_words);  
             $vf =''; 
             $vf =$out_words[0][0]; 
             $vc=''; 
             $vc = '<strong>'.$vf.'</strong>';  
             $volume=''; 
             $volume[] =$vf; 
             $resulut = preg_replace("/\b$vf\b/i", $vc, $resulut);  
             preg_match('/<title>(.*)<\/title>/i',$alL_meta[1], $head); 
             $head[1] = htmlentities($head[1]); 
                 if (empty($head[1])) 
                 { 
                 $head[1] = 'Titel'; 
                 } 
               
echo "<div class=\"title\"><a href=\" $array_all[$i] \"><u> $head[1] </u></a></div>";  
echo "<div class=\"out\">".$resulut." ...<br /></div>";     
echo "<div class=\"url\"><i>Url:</i><a href=\" $array_all[$i] \"> $array_all[$i] </a><br /><br /><br /></div>\n";   
            }         
          }             
       }   
       if ($vf) 
       { 
         echo "<br /><br /><div class=\"adress\"><a href=\"http://web-script-tube.de\" target=\"_blank\"><i> By Web-Script-Tube</i></a></div>"; 
       } 
     if (empty($resulut)) 
     { 
       echo "<div class=\"out\">Es wurden keine mit Ihrer Suchanfrage - $pattern - &uuml;bereinstimmenden Dokumente gefunden.<br /></div>"; 
       echo "<div class=\"out\">Vorschl&auml;ge:<br /><br /></div>"; 
       echo "<div class=\"out\">* Stellen Sie sicher, dass alle W&ouml;rter richtig geschrieben wurden.<br /></div>"; 
       echo "<div class=\"out\">* Versuchen Sie es mit einem anderen Suchbegriff.<br /></div>"; 
       echo "<div class=\"out\">* Versuchen Sie einen allgemeineren Suchbegriff.<br /><br /><br /><br /><br /></div>"; 
       echo "<div class=\"adress\"><a href=\"http://web-script-tube.de\" target=\"_blank\"><i>By Web-Script-Tube</i></a></div>"; 
     } 
     //Log-Datei 
     $timestamp = time(); 
     $datum = date("d.m.Y H:i",$timestamp); 
     $fp = fopen("scripts/inc/suche.log", "a+"); 
     $ausgabe = "\n" . $pattern . " (" . count($hit, COUNT_RECURSIVE) . ") " . $datum; 
     fputs($fp,$ausgabe); 
     fclose($fp); 
   }
Die Log-Datei am Ende des Skripts habe ich eingefügt. Ich hätte gerne, dass in der Log-Datei die Anzahl der Treffer eingetragen wird. Die Funktion count($hit, COUNT_RECURSIVE), die ich dafür verwende, liefert mir als Ergebnis aber immer 1.

Hat jemand eine Idee, wie ich die Anzahl der Treffer ermitteln kann?
 
Habe mir den Code nicht so genau angeguckt.
Ich würde bei der Ausgabe von den Suchtreffern einfach eine Zählervariable einfügen.
Müsste ca. Zeile 85 sein. Am Anfang auf 0 setzten und dann immer +1 ;-)
 
und anstadt einfach alles aufzuschreibenw as dir gerade einfällt und dieses zu entfernen so wie hier

PHP:
preg_replace('/[\/\(\)\{\[\]\}\#\*\^\<\>\=\?\*\.\,\;\!\"\'\|\\\]/U', '',$pattern);

erlaube doch einfach nur die zeichen die du haben willst

PHP:
preg_replace("/[^\w]/", '', $patthen);
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben