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

altox-de

Erfahrenes Mitglied
Hallo zusammen.
Kurze Einleitung: Nachdem die zahlreichen Suchen noch Lösungen
(in Google, hier bei tutorials, Code-Scripting bei Suchmaschinen...)
zu keinem Ergebnis führten, hab' ich mir eins zusammengebastelt.

Ich benötige ein Suchscript, das den Ordner durchsucht, in dem das Script liegt.
Das klappt soweit schon ganz gut (wie man auf http://www.biblothek.de >> Bibelstellen
sieht - als Suche "johannes" eingeben). Doch sind noch einige Bugs drin...

Hier findet ihr die Ordnerstruktur des Ordners, in dem das Script liegt und der durchsucht werden soll:
Hier geht's zum Bild

Hier der PHP-Code der Suche:
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!</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=\"index.php?id=$file\" class=\"link\"> $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!</font>";}
?>

Jetzt zu den Problemen:
(1) Als Link wird immer ein "index.php?id=" ausgegeben. Sowas hab ich aber nicht! Der Link müsste einfach nur im Format "johannes.html" lauten.
(2) Wird im Script keine Groß- und Kleinschreibung beachtet (siehe Suchergebnis). Kann man das einfügen?
(3) Die Zeichenlänge des Titels ist mir schleierhaft. Wenn man z.B. "johannes" sucht erscheint "johannes - leben und" anstatt des Titels "Johannes - Leben und Werk". Der Titel müsste einfach länger dargestellt werden können!

Ok, das war's erstmal ;-)
Bitte helft mir - denn jetzt (nachdem ich ja mal echt was gemacht hab) komm' ich nicht mehr weiter...
Liebe Grüße,
Claudi
 
Zuletzt bearbeitet:
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Ersetze doch einfach
<a href=\"index.php?id=$file\" class=\"link\">
durch
<a href="$file" class=\"link\">
 
Zuletzt bearbeitet:
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Hey! Danke! Super - hätte ich auch draufkommen können ;-) Klar!

Wären's nur noch zwei Probleme:
(2) Wird im Script keine Groß- und Kleinschreibung beachtet (siehe Suchergebnis). Kann man das einfügen?
(3) Die Zeichenlänge des Titels ist mir schleierhaft. Wenn man z.B. "johannes" sucht erscheint "johannes - leben und" anstatt des Titels "Johannes - Leben und Werk". Der Titel müsste einfach länger dargestellt werden können!
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

frage 2:
PHP:
// *** .*-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));
}

?>
ich glaube das muss es sein! wenns falsch ist sorry! bina uch erst anfänger ;-]
 
Zuletzt bearbeitet:
Fehler in deinem Code

Es erscheint eine Fehlermeldung in Zeile 64.

PHP:
                        continue; 
                    } 
                  } 
              } 
          }   (<< diese Zeile!)
      } 
      closedir($hDir);

Egal wo ich es einbaue, wird immer diese Zeile als Fehler ausgegeben.
 
Zuletzt bearbeitet:
Re: Fehler in deinem Code

Da wird wohl eine schliessende Schweifklammer zu viel sein.... mehr als Vermutungen kann man ohne den kompletten Code und den Wortlaut der Fehlermeldung nicht anstellen.

Entferne mal nach und nach die geschweiften Klammern, vielleicht gehts ja irgendwann:-)
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Um die Groß- und Kleinschreibung nicht zu unterdrücken, kommentiere die entsprechenden Zeilen aus:
// $string = strtolower($string);
// $search = strtolower($search);
MfG
dirigent
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Hallo zusammen

Fehldermeldung:
"Parse error: parse error in /var/www/web3/html/014-27-biblothek-04-05/pages/frames/inhalte/nach-bibelstellen/suche.php on line 65"

line65 ist die benannte } Zeile


Auskommentieren?
Leider hab ich nicht den blassesten Schimmer, was DAS sein soll...
Die Zeilen kommen so schon im Code vor - was soll ich damit tun?

PHP:
$string = strtolower($string); 
$search = strtolower($search);
in den Zeilen 18 + 19 (siehe oben)
 
Zuletzt bearbeitet:
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Du solltes Dich mal mit den Grundlagen von PHP beschäftigen.
Es gibt da jede Menge von Infos und Anleitungen im Netz.
Ohne fundierte Kenntnisse von PHP kommst Du nicht weit!
Auskommentieren bedeutet, dass Du der Zeile // voranstellst.
Die Zeile wird dann vom PHP-Interpreter nicht ausgewertet.
Nimm einfach den Quelltext von oben und modifiziere ihn, wie von mir beschrieben.
MfG
dirigent
 
Re: Probleme mit Suchfunktion ::: Id-Links, Groß-Klein-Schreibung, Zeichenlänge ::: HILFE

Hallo!
Danke für die Erklärung! Du hast nicht noch ne Lösung für das Problem mit dem zu kurzen Titel? Du kannst das Problem hier sehen:

http://www.biblothek.de >> Suche nach Bibelstellen + "Johannes" eingeben...
Dann wird "Johannes - Leben und" angezeigt - der Titel also abgeschnitten...
 
Zurück