Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge :::

Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

$piece2 = substr($pieces[1], 0, 200);
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Das hat glaub' ich nicht geklappt...
Der Titel ist immer noch so abgeschnitten!

Auch wenn ich "500" eingebe, verändert sich nichts an der Länge.
 
Zuletzt bearbeitet:
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

// $piece2 = explode(" ", $piece2);
// array_pop($piece2);
// $piece2 = implode(" ", $piece2);
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Hättest du doch einfach geschrieben, ich soll die Zeilen auskommentieren ;-)
Vielen Dank - es klappt endlich! Toll, danke!

ABER
ich hab noch ne Frage:
Kann man in dem Script auch einstellen, dass es NUR den Seitennamen (also z.B. Johannes.html und den Seitentitel) durchsucht?
 
Zuletzt bearbeitet:
Suche: Nur Seitentitel + Name anstatt der ganzen Seite durchsuchen

Hallo zusammen.
Ich habe bereits folgendes Script:

PHP:
<?php
$dateityp = ".htm";

if(empty($search)) {$search=$_POST[search];}
if(strlen($search) < "4")
{echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Ihr Suchbegriff ist zu kurz! Bitte beachten Sie, <br> dass Ihr Suchbegriff mindesdens vier Buchstaben lang sein muss, <br> um von unserer Suche berücksichtigt zu werden.<br>Bitte versuchen Sie es nochmals!<p>Falls Sie Hilfe bei der Suche benötigen, klicken Sie <b><a href=../../../suchanleitung.html target=M-A-I-N-S-I-T-E>hier</a><b>.</font>";exit;}
$found = "0";
$verz = opendir('.');
while($file = readdir($verz)) 
{  
if($file != "." && $file != ".." &&  !is_dir($file)) 
{
$filetype = stristr($file, $dateityp);
if(!empty($filetype))
{
$string = file_get_contents($file);
$string = html_entity_decode($string);
//$string = strtolower($string); 
//$search = strtolower($search);
$test = substr_count($string, $search);
if(!empty($test))
{
$string = ereg_replace("\n", "", $string); 
$string = strip_tags($string);

$pieces = explode($search, $string);
$piece1 = substr($pieces[0], -50);
$piece1 = explode(" ", $piece1);
array_shift($piece1); 
$piece1 = implode(" ", $piece1);
$piece2 = substr($pieces[1], 0, 100);
// $piece2 = explode(" ", $piece2); 
// array_pop($piece2); 
// $piece2 = implode(" ", $piece2); 
$rest = "$piece1<b>$search</b>$piece2";
$array .= "<font face=Arial> $rest <br>Link: <a href=\"$file\" class=\"link\" target=\"M-A-I-N-S-I-T-E\"> $file </a></font><br><br>\n";
$found ++;	
}}}}
closedir($verz);
if($found != "0")
{
echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Ihre Suche ergab <strong>$found</strong> Treffer:</font><br><br>"; 
$array = explode("\n", $array);
natsort($array);
reset($array);
$array = array_reverse($array);
while(list($line_num, $line) = each($array)) 
{
$ausgabe .= "$line\n";
}
print $ausgabe;
}
if($found == "0")
{ echo "<body leftmargin=0 marginheight=3 marginwidth=0 topmargin=3><font face=Arial>Wir bitten vielmals um Entschuldigung, <br> aber es wurden keine Inhalte passend zu Ihren Eingaben gefunden. <br> Bitte versuchen Sie es nochmals!<p>Falls Sie Hilfe bei der Suche benötigen, klicken Sie <b><a href=../../../suchanleitung.html target=M-A-I-N-S-I-T-E>hier</a><b>.</font>";}
?>

Es funktioniert einwandfrei (was man auf http://www.biblothek.de >> Suche nach Bibelstellen leicht erkennen kann - als Testsuchbegriff "Johannes" eingeben!).
Auch mit Hilfe vieler Threads bei Tutorials ist das erst möglich geworden.


Doch hab ich noch ein Problem mit dem Script:
Das Script durchsucht jetzt die GESAMTE Seite im gleichen Ordner (also auch den Inhalt!).
Ich möchte aber, dass es NUR den Seitennamen (also z.B. johannes.html) und den Seitentitel (eingegeben zwsichen <title> und </title>) durchsucht. Geht das?
 
Zuletzt bearbeitet:
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Wenn Du
$string = html_entity_decode($string);
durch
$string = eregi_replace(".*<title>(.*)</title>.*", '\\1', $string);
ersetzt, wird nur der Seitentitel in $string übergeben und durchsucht.
MfG
dirigent
 
so! vergiss mal dein zetizigen code :-(
und erstelle ne neue php datei "search.php"
und füge diese beiden codes ein:

du fügst das in deine php datei search.php ganz oben ein
PHP:
<?php
  $search=FormatSearchString(stripslashes($search));
?>

und dann diesen code ganz unten:

PHP:
<?php

if(!$search) exit;

echo "<h4>Ergebnis:</h4>\n";

$files=ReadDirs($AllowedDirs,$AllowedExts);

$ResultCount=0;
if($files && $search){
  foreach($files as $f){
    if(SearchFile($f,$search)){
      $fn=$f;
      if(substr($f,0,strlen($RootDir))==$RootDir) $fn=$DomainName.substr($f,strlen($RootDir));
      $ResultCount++;
      if($Show_ResultNumber) echo $ResultCount.". ";
      echo "<a href=\"".$fn."\"><b>".$Site_Title."</b></a><br>\n";
      if($Meta_Description) echo $Meta_Description."<br>\n";
      if($Site_Content) echo "<span id=small><span id=grey>".$Site_Content."</span></span><br>\n";
      if($Show_Filename) echo "<span id=grey>Datei:</span> <span id=green>".$fn."</span>";
      if($Show_Filesize){
        if($Show_Filename) echo " - ";
        echo "<span id=grey>Größe:</span> <span id=green>".round(filesize($f)/1024,2)." KB</span>";
      }
      if($Show_Filename || $Show_Filesize) echo "<br>";
      echo "<br>\n";
    }
  }
  clearstatcache();
}
echo "Es wurden <b>".$ResultCount."</b> Seiten gefunden.<br>\n";  
echo "<p><small><b>PHP-Suche</b><br>Powered by <a href=\"http://www.gaijin.at/\">www.gaijin.at</a></small></p>\n";

function SearchFile($url,$search){
  global $Show_Description;
  global $Found_Piece_Len;
  
  global $Site_Title;
  global $Site_Content;
  global $Meta_Description;
  global $Meta_Robots;
  
  $Site_Title="";
  $Site_Content="";
  $Meta_Description="";
  $Meta_Robots="";

  // *** Meta-Angaben ermitteln ***
  $gmtarray=get_meta_tags($url);
  while(list($key,$val)=each($gmtarray)){
    switch(strtolower($key)){
      case "title": $Meta_Title=$val; break;
      case "keywords": $Meta_Keywords=$val; break;
      case "description": $Meta_Description=$val; break;
      case "robots": $Meta_Robots=strtolower($val); break;
      case "revisit": $Meta_Revisit=strtolower($val); break;
      case "revisit-after": $Meta_RevisitAfter=strtolower($val); break;
    }
  }
  if(!$Show_Description) $Meta_Description="";
  if(eregi("noindex",$Meta_Robots)) return false;

  // *** Dateiinhalt einlesen (bzw. Ausgabe bei PHP) ***  
  $fp=@fopen($url,"r"); 
  if(!$fp) return false;
  while(!feof($fp)){
    $content.=fgetss($fp,10240,"<title>");
  }
  fclose($fp);
  $content=trim($content);
  $content=$Site_Title." ".$Meta_Title." ".$Meta_Keywords." ".$Meta_Description." ".$content;
  
  // *** Seitentitel ermitteln ***
  $Site_Title=GetSiteTitle($content);
  if(!$Site_Title) $Site_Title=$Meta_Title;
  if(!$Site_Title) $Site_Title=basename($url);
  
  if(substr($content,0,strlen($Site_Title))==$Site_Title) $content=substr($content,strlen($Site_Title));
  $content=strip_tags($content);
  $content=str_replace("\n"," ",$content);
  $content=str_replace("\r","",$content);
  $sc=" ".trim($content);
  
  while(strpos($sc,"  ")){
    $sc=str_replace("  "," ",$sc);
  }
  $content=$sc;
      
  // *** Suchen ***
  $found=false;
  $a=explode(" ",strtolower($search));
  $lowcontent=strtolower($content);
  foreach($a as $arg){
    $p0=strpos($lowcontent,$arg);
    if($p0>0){
      $p1=$Found_Piece_Len;
      $p2=$Found_Piece_Len;
      if(($p0-$p1)<0) $p1=$p0;
      $result_text.="...".substr($content,$p0-$p1,$p1)."<b id=red>";
      $result_text.=substr($content,$p0,strlen($arg))."</b>".substr($content,$p0+strlen($arg),$p2);
      $found=true;
    }else{
      $found=false;
      break;
    }
  }
  
  if(!$found) return false;
  if($result_text) $result_text.="...";

  $Site_Content=$result_text;

  return true;
}
  
function FormatSearchString($search){
  $chars=".:-_,;!§$%&/()=#+*~'?\[|]{^°}²³µ@€ äöüß1234567890abcdefghijklmnopqrstuvwxyz";
  for($i=0;$i<strlen($search);$i++){
    $a=substr($search,$i,1);
    if(stristr($chars,$a)) $s.=$a;
  }
  while(strpos($s,"  ")){
    $s=str_replace("  "," ",$s);
  }
  return trim($s);
}

function ReadDirs($DirArray,$ExtArray){
  $fileArray=array();
  foreach($DirArray as $d){
    if($hDir = opendir($d)){
      while($file=readdir($hDir)){
        if(!is_dir($d."/".$file)){
	        // *** .*-Dateien (zB .htaccess) ignorieren ***
	        if(substr($file,0,1)!="."){
    		    foreach($ExtArray as $ext){
			        if(substr(strtolower($file),strlen($file)-strlen($ext),strlen($ext))==strtolower($ext)){
      			    array_push($fileArray,$d."/".$file);
			        	continue;
			        }
			      }
		      }
	      }
      }
      closedir($hDir);
	  }
  }
  return $fileArray;
}

function GetSiteTitle($content)
{ 
  $p1=strpos(strtolower($content),"<title>");
  if(!$p1) return false;
  $p2=strpos(strtolower($content),"</title>",$p1);
  if(!$p2) return false;
  return trim(substr($content,$p1+7,$p2-$p1-7));
}

?>
und das ladest auf dein server hoch fertig :) ;-]
 
Vielen Dank
an alle (besonders dirigent), die mir geholfen haben!
Endlich klappt alles, wie ich es möchte - toll!

Falls ich doch noch was brauche, komme ich wieder auf euch zurück.
 
Zurück