Genau das war ja die Frage.
Und natürlich enthält zumindest $file nach der Schleife false, weil genau das der Rückgabewert ist, den readdir liefert, wenn es keine weiteren Einträge mehr gibt. (Gut, das würde noch nicht erklären, warum $dir auch nichts mehr liefert. Aber dass auch das in dem Kontext, in dem du die Kontrollausgabe gemacht hast, nicht verfügbar ist, ist ja nicht so unwahrscheinlich.)
Warum bringst du es nicht an der Stelle unter, an der das Problem besteht?[/quote]
Weil ich dachte, dass dadurch nichts ausgegeben wird.
Jetzt habe ich den echo-Befehl mal an mehreren Stellen im Suchskript direkt eingebaut. Leider wurde mich nichts ausgegeben oder mir wurde ein Syntax-Fehler erzeugt.
Vielleicht hilft es ja, hier das Suchskript:[code]<?php
###########################################################
© PlaNet Concept e.K., Lars Odermath, 2003
###########################################################
:: planetSearch :: Version vom 05.10.2003
COPYRIGHT NOTICE
Copyright 2003 PlaNet Concept e.K.
All Rights Reserved.
:: planetSearch :: darf für private Homepages kostenlos benutzt und geändert
werden, solange SÄMTLICHE Copyright-Verweise und die restlichen Kommentare erhalten
bleiben.
Mit dem Einsatz dieses Skripts akzeptieren Sie, daß PlaNet Concept e.K.,
Lars Odermath, von jeglicher Haftung und Gewährleistung hinsichtlich des
Einsatzes befreit ist.
Der Verkauf dieses Skripts, auch in modifizierter Form, ist ohne vorherige
Absprache ausdrücklich untersagt! (Mit anderen Worten: Bitte fragen Sie uns,
bevor Sie versuchen, mit unserem Script Geld zu verdienen.)
Sollten Sie den Copyright-Verweis in der Ausgabe des Scriptes nicht anzeigen
oder das Script auf kommerziellen Seiten einsetzen wollen, können Sie dies gegen die
Entrichtung einer Lizenz-Gebühr in Höhe von € 36,00 zzgl. der gesetzl. MWSt. tun.
Senden Sie uns dazu bitte eine eMail und geben u.a. die URL für das Script an.
Sie erhalten dann umgehend eine Rechnung von uns.
BITTE LESEN UND BEACHTEN SIE UNSERE NUTZUNGSBEDINGUNGEN FÜR DIE SCRIPTE!!!
Die Nutzungsbedingungen finden Sie in der der beigefügten “nutzungsbedingungen.txt”
###########################################################
###########################################################
#############################
include ("./inc/config.inc.php");
#############################
$root_dir = $_SERVER[“DOCUMENT_ROOT”].$from_dir."/";
@setlocale(“LC_ALL”, “de_DE”);
Suchbegriff(e) übernehmen und umwandeln
$search_exp = strip_tags($_POST[“search_exp”]);
#############################
#Prüfen, ob ein Suchbegriff eingegeben wurde
if (!empty($search_exp)) {
Sonderzeichen entfernen
$frrepl = array("=+=", “=\s+=”);
$torepl = array("", " ");
$search_exp = preg_replace( $frrepl, $torepl, $search_exp);
$search_exp = preg_quote($search_exp);
$search_exp = trim($search_exp);
Zeichenanzahl des Suchbgeriffes prüfen
if (strlen($search_exp) < $sexp_length) {
// Template laden
$tmpl = join(’’, file("./tmpl/search_error.htm"));
$tmpl = preg_replace("=[search_error_count]=", $error_count, $tmpl);
$tmpl = preg_replace("=[search_error_empty]=", “”, $tmpl);
eval(’?>’ . $tmpl);
} else {
Suchbegriffe in Array umwandeln und zählen
$search_arr = explode(" ",$search_exp);
$search_count = count($search_arr);
“Dummy”-Array für Such-Array erzeugen
$arr = array();
$arr_all = array();
Template laden
$tmpl = join(’’, file("./tmpl/search_result.php"));
Bereich der Trefferanzeige aus dem Template ziehen
preg_match_all("=[SEARCH_START](.*)[SEARCH_STOP]=siU", $tmpl, $between);
$search_pages = 0;
$cont_part = walk_dir($root_dir); // Verzeichnisdurchlauf starten
$search_pages = count($cont_part); // Anzahl der Trefferseiten
rsort($cont_part); // Array sortieren
for ($j=0; $j<$search_pages; $j++) { // Arrays auslesen
list($anz_searchexp, $title, $descr, $new_path) = $cont_part[$j];
$content = preg_replace("=[SEARCH_TITLE]=", “$title”, $between[1][0]);
$content = preg_replace("=[SEARCH_LINK]=", “$from_dir”."$new_path", $content);
$content = preg_replace("=[SEARCH_DESC]=", “$descr”, $content);
$content = preg_replace("=[SEARCH_COUNT]=", “$anz_searchexp”, $content);
$cont_x .= $content;
}
// Suchergebnis zusammenstellen und anzeigen
$tmpl = preg_replace("=[SEARCH_START](.*)[SEARCH_STOP]=siU", $cont_x, $tmpl);
$search_exp = str_replace(’\’, ‘’, $search_exp);
$tmpl = preg_replace("=[SEARCH_WORDS]=", $search_exp, $tmpl);
$tmpl = preg_replace("=[SEARCH_PAGES]=", $search_pages, $tmpl);
if (empty($cont_part)) {
$tmpl = preg_replace("=[NO_MATCH]=", $no_match, $tmpl);
} else {
$tmpl = preg_replace("=[NO_MATCH]=", “”, $tmpl);
}
eval(’?>’ . $tmpl);
#################################################
Logdatei schreiben
foreach ($search_arr as $search_exp) {
$zeilen = file("./_log/search_log.txt");
$anz_zeilen = sizeof($zeilen);
$x=0;
Datenfile auslesen
for ($i=0; $i<$anz_zeilen; $i++) {
list ($search_word, $search_num) = split("\\|", chop($zeilen[$i]));
// wenn Suchbegriff gefunden wird
if ($search_exp==$search_word) {
$search_num++;
$i-2;
$x++;
}
$new_log .= "$search_word|$search_num\n";
}
// wenn der Suchbegriff nicht schon geloggt wurde
if ($x==0) {
$search_num = “1”;
$new_log .= “$search_exp|$search_num\n”;
}
$data = fopen("./_log/search_log.txt",“w+”);
flock($data,1);
fwrite($data, $new_log);
flock($data,3);
fclose($data);
unset($new_log);
}
#################################################
}
}
#############################
Wenn kein Suchbegriff eingegeben wurde
else {
# Template laden
$tmpl = join(’’, file("./tmpl/search_error.htm"));
$tmpl = preg_replace("=[search_error_count]=", “”, $tmpl);
$tmpl = preg_replace("=[search_error_empty]=", $error_empty, $tmpl);
eval(’?>’ . $tmpl);
}
#############################
#################################################
Function für den Verzeichnisdurchlauf und die Trefferermittlung
function walk_dir($dir, $pos=2)
{
global $search_exp, $search_arr, $search_count, $arr, $ignore_dir, $ignore_files, $dat_type, $root_dir, $search_area, $cont_part, $no_title, $search_pages, $arr_all;
$handle = @opendir($dir);
while ($file = @readdir ($handle))
{
if (preg_match("=^\.{1,2}$=",$file))
{
continue;
}
$cut_dir = preg_replace("=$root_dir=siU", "", $dir); // Verzeichnisse zum Vergleich anpassen
if (in_array($cut_dir, $ignore_dir)) continue; // zu ignorierende Verzeichnisse auslassen
if (preg_match('=(_vti_cnf|_notes)=i', $cut_dir)) continue;
if(is_dir($dir.$file))
{
walk_dir($dir.$file."/", $pos + 3);
}
else if(in_array($dir.$file, $ignore_files) == false)
{
#########################################
# Suche und Trefferanzeige
#########################################
$abs_dir = preg_replace("=$root_dir=","",$dir); // absoluten Pfad ermitteln
if (preg_match("=(\.$dat_type)$=",$file)) { // wenn eine Datei eine zulässige Endung hat...
$str = join('', file("$dir$file")); // ...Datei einlesen
if (!preg_match("=\<\!\-\-.no_search.\-\-\>=siU", $str)) { // auf auszuschließende Seiten prüfen
$str = ch_uml($str); // Umlaute verarbeiten
// Titel ermitteln
preg_match("=<title>(.*)</title>=siU", $str, $title);
// Meta-Beschreibung ermitteln
preg_match('=<meta.*name\="description".*content\="(.*)".*>=siU',$str,$descr);
// Keywords
preg_match('=<meta.*name\="keywords".*content\="(.*)".*>=siU',$str,$keyw);
// zu durchsuchender Bereich
if ($search_area==1) { // Titel, Description, Keywords
$a = "$title[1]"."$descr[1]"."$keyw[1]";
}
else { // alles
$str = preg_replace("=\<\!\-\-.no_search_start.\-\-\>.*?\<\!\-\-.no_search_stop.\-\-\>=s", "", $str);
$a = preg_replace("=<script.*>.*<\/script>=siU", "", $str); // JavaScript-Code entfernen
$a = preg_replace("=<\?.*?\?>=s", "", $a); // PHP-Tags löschen um nur Text zu durchsuchen
$a = preg_replace("=(<[^>]+>)=siU", "", $str); // Tags löschen um nur Text zu durchsuchen
$a .= "$title[1]"."$descr[1]"."$keyw[1]";
}
$i=0;
foreach ($search_arr as $search_word) { // jeden Suchbegriff prüfen
if (preg_match("=($search_word)=i", $a)) { // wenn Suchbegriff vorkommt...
$anz_searchexp += preg_match_all("=$search_word=siU", $a, $nullinger);
$i++; // i für jeden gefundenen Suchbegriff erhöhen
if ($i==$search_count) { // wenn ALLE Suchbegriffe gefunden wurden...
if (!empty($title[1])) // Title der Seite auslesen
{
$new_title = "$title[1]";
$new_path = "/$abs_dir$file";
}
else {
$new_title = "$no_title";
$new_path = "/$abs_dir$file";
}
if (!empty($descr[1])) // description auslesen
{
$new_descr = "$descr[1]";
}
else {
$new_descr = "";
}
if (!preg_match("=^\(\.\*\)$=", $new_title)) {
$s_show = array();
$s_show[] = $anz_searchexp;
$s_show[] = $new_title;
$s_show[] = $new_descr;
$s_show[] = $new_path;
array_push($arr_all, $s_show);
}
unset($str, $anz_searchexp);
}
}
}
}
}
#########################################
#########################################
}
}
$cont_part = $arr_all;
return ($cont_part);
@closedir($handle);
}
Funktion ende
#################################################
// Umlaute bearbeiten
function ch_uml($del_uml) {
$del_uml = preg_replace("=ä=", “ä”, $del_uml); // Umlaute und ß
$del_uml = preg_replace("=ö=", “ö”, $del_uml);
$del_uml = preg_replace("=ü=", “ü”, $del_uml);
$del_uml = preg_replace("=Ä=", “Ä”, $del_uml);
$del_uml = preg_replace("=Ö=", “Ö”, $del_uml);
$del_uml = preg_replace("=Ü=", “Ü”, $del_uml);
$del_uml = preg_replace("=ß=", “ß”, $del_uml);
return ($del_uml);
} // end func
#################################################
?>[/code]
[quote=“chrisb”]Weitere Hinweise, dass du den Umgang mit der Technik wenigstens mal in Grundzügen lernen solltest, kann ich mir wohl sparen - ignorierst du ja sowieso.
Aber du musst doch langsam auch selber mal merken, dass du so kaum weiterkommst, und immer darauf angewiesen sein wirst, dir fertige Lösungen von anderen zu schnorren, wenn du dich nicht mal ein bisschen damit beschäftigst …[/quote]
Nein, diese werden nicht gänzlich ignoriert. Ich weiß, dass ich von der Materie eigentlich nicht verstehe und auf Andere angewiesen bin. Aber meine Prioritäten liegen (derzeit) woanders.