Fehler in Suchscript - "foreach($DirArray as $d){"

altox-de

Erfahrenes Mitglied
Hallo zusammen.
Wenn ich dieses Suchscript verwende,
wir folgende (Fehler)Meldung ausgegeben:

Ergebnis:

Warning: Invalid argument supplied for foreach() in /var/www/web3/html/014-27-biblothek-04-05/pages/frames/inhalte/nach-personen/search.php on line 134
Es wurden 0 Seiten gefunden.

PHP-Suche
Powered by http://www.gaijin.at



Hier das Script:
PHP:
<?php 
  $search=FormatSearchString(stripslashes($search)); 
?> 

<?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){      //diese Zeile ist das Problem
    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)); 
} 

?>
Zeile "134" ist folgende:
foreach($DirArray as $d){
Was ist daran falsch?

Danke,
liebe Grüße,
Claudi
 
Zuletzt bearbeitet:
Naja schonmal geschaut, ob $AllowedDirs überhaupt ein array ist? Weil du musst ja ein Array übergeben. Mir kommt es so vor, als würde da kein Array sein und deswegen meckert foreach() rum.
 
Zurück