Warum werden keine PDF Dateien durchsucht?

Mellowtrax

Mitglied
Hallo zusammen

Ich hab mir mit Hilfe einiger kleiner Beispiele im Netz eine Suche auf PHP gebastelt. Nun funktioniert das auch super. Es werden alle doc oder HTML Dateien durchsucht. Nur bei den PDF Dateien macht die Suche ne Ausnahme. Und ich weiss nicht weshalb kann mir da jemand weiterhelfen?

Gruss Mell

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>PHP-Suchmaschine</title>
 <style>
 body,td,input { font-family:Verdana;font-size:7.9pt }
 .t_nummer { font-family:Verdana,Tahoma,Arial; font-size:16pt; font-weight:bold; color:#999999}
 .markierung {color:#ff0000}
 </style>
</head>
<body>
<?

########### Hier folgen die Einstellungen ###########
$max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
$treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
$endungen=array("html","htm","php","phtml","pdf""); # Dateien mit welchen Endungen werden durchsucht?
$pfade_gesamt="./,Schwarzes Brett/Abteilungen/BM_Verkauf/,Schwarzes Brett/Abteilungen/BM_Kundendienst/,Schwarzes Brett/AllgemeineInfos/,Schwarzes Brett/Abteilungen/AvescoRent/,Schwarzes Brett/Abteilungen/Buchhaltung/,Schwarzes Brett/Abteilungen/Empfang/,Schwarzes Brett/Abteilungen/Ersatzteildienst/,Schwarzes Brett/Abteilungen/ESYS/,Schwarzes Brett/Abteilungen/LOSY/,Schwarzes Brett/Abteilungen/Schulungscenter/,Schwarzes Brett/Abteilungen/Servicecenter/,Schwarzes Brett/Abteilungen/Werkstatt/,EDV und Admin/Anleitungen/,EDV und Admin/DiverseInfos/"; # Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner (durch Kommata trennen!)
$max_stelle=200; # Maximale (ungefähre) Länge (in Zeichen) der ersten gefundenen Textstelle
$mehr_laenge=200; # Maximale (ungefähre) Länge (in Zeichen) des Strings für weitere Vorkommnisse
########### Ab hier folgt die Suche #######
if (!isset($grossschreibung)) { $grossschreibung=0; }
if (!isset($ganzewoerter)) { $ganzewoerter=0; }
if (!isset($index)) { $index=0; }
$suchtext=trim(stripslashes($suchtext));
if ($grossschreibung==0) { $suchtext=strtolower($suchtext); }
$suchtext=ereg_replace(","," ",$suchtext);
$suchtext2=array(); $suchwoerter=array();
$suchtext2=explode(" ",$suchtext);
foreach ($suchtext2 as $einwort)
{
if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) && (!in_array($einwort,$suchwoerter)))
{ array_push($suchwoerter,$einwort); }
}
$suchtext=implode(" ",$suchwoerter);
?>
<form action="<? echo "$PHP_SELF"; ?>" method="post">
<table width="500" cellpadding="5" cellspacing="0" border="0" bgcolor="#ccddee" align="center">
<tr>
<td align="right">
<?
echo "<input type=\"text\" name=\"suchtext\" size=\"";
$browser=$HTTP_USER_AGENT;
if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo "14"; }
echo "\" value=\"".$suchtext."\"><br><br>";
?>
<input type="submit" value=" suchen ">
</td>
<td>
<b>Groß- und Kleinbuchstaben</b><br>
<input type="radio" name="grossschreibung" value="1" <? if ($grossschreibung==1) echo "checked"; ?>>unterscheiden<br>
<input type="radio" name="grossschreibung" value="0" <? if ($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden
</td>
<td>
<b>Art der Suche</b><br>
<input type="radio" name="ganzewoerter" value="1" <? if ($ganzewoerter==1) echo "checked"; ?>>nur ganze Wörter<br>
<input type="radio" name="ganzewoerter" value="0" <? if ($ganzewoerter==0) echo "checked"; ?>>Wortteile
</td>
</tr>
</table>
</form>
<?
if ($suchtext!="") { start(); ausgabe(); }
function start()
{
global $suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$treffer,$max_stelle,$mehr_laenge;
global $endungen,$pfade_gesamt;
$dateinummer=0;
$treffer=array();
$pfade=array(); $pfade=explode(",",$pfade_gesamt);
 foreach ($pfade as $pfad)
 {
 $ordner=opendir($pfad);
  while ($eintrag=readdir($ordner))
  {
  $name=$pfad.$eintrag;
  $dateiname=explode(".",$eintrag);
  if (in_array($dateiname[1],$endungen))
   {
   $anzahl=0;
   $schluss=0;
   $gefundene_woerter=array();
   $datei=fopen($name,"r");
	while (!feof($datei))
	{
	$zeile=fgetss($datei,10000,"");
	if ($grossschreibung==0) { $zeile=strtolower($zeile); }
	
	$woerter=explode(" ",$zeile);
	foreach ($woerter as $wort)
	{
	foreach ($suchwoerter as $suchwort)
	 {
	 ### ganze Wörter ###
	 if ($ganzewoerter==0)
	  {
	  if (strstr($wort,$suchwort))
	   {
	   if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
	   $anzahl++;
	   $treffer["vorkommnisse"][$dateinummer]++;
	   if ($anzahl==1)
		{
		$treffer["datei_url"][$dateinummer]=$name;
		
		$position=strpos($zeile,$wort);
		$wortlaenge=strlen($wort);
		$zeilenlaenge=strlen($zeile);
		if ($zeilenlaenge>$max_stelle)
		 {
		 $lside=$position-(($max_stelle-$wortlaenge)/2);
		 $rside=$lside+$max_stelle;
		 if ($lside<0) { $rside=$rside-$lside; $lside=0; }
		 if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
		 }
		else { $lside=0; $rside=$zeilenlaenge; }
		$stelle=substr($zeile,$lside,$rside-$lside);  
		$stelle=ereg_replace($wort,"<span class=\"markierung\">".$wort."</span>",$stelle);
		$stelle="...".$stelle."...";
		$treffer["textstelle"][$dateinummer]=$stelle;
		}
		else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
		else if ($anzahl>2)
		 {
		 if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
		 else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
		 }
	   }
	  }
	  ### ganze Wörter ENDE ###
	  ### Wortteile ###
	  else
	  {
	  if ($wort==$suchwort)
	   {
	   if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
	   $anzahl++;
	   $treffer["vorkommnisse"][$dateinummer]++;
	   if ($anzahl==1)
		{
		$treffer["datei_url"][$dateinummer]=$name;
		
		$position=strpos($zeile,$wort);
		$wortlaenge=strlen($wort);
		$zeilenlaenge=strlen($zeile);
		if ($zeilenlaenge>$max_stelle)
		 {
		 $lside=$position-(($max_stelle-$wortlaenge)/2);
		 $rside=$lside+$max_stelle;
		 if ($lside<0) { $rside=$rside-$lside; $lside=0; }
		 if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
		 }
		else { $lside=0; $rside=$zeilenlaenge; }
		$stelle=substr($zeile,$lside,$rside-$lside);  
		$stelle=" ".$stelle." ";
		$stelle=ereg_replace(" ".$wort." "," <span class=\"markierung\">".$wort."</span> ",$stelle);
		$stelle="...".$stelle."...";
		$treffer["textstelle"][$dateinummer]=$stelle;
		}
		else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
		else if ($anzahl>2)
		 {
		 if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
		 else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
		 }
	   }
	  }
	  ### Wortteile ENDE ###
	 }
	 }
	}
	fclose($datei);
	$treffer["woerter"][$dateinummer]=count($gefundene_woerter);
	$treffer["mehr"][$dateinummer]=$mehr;
	if (count($gefundene_woerter)>0) { $dateinummer++; }
   }
  }
 closedir($ordner);
 }
 
}
function ausgabe()
{
global $treffer,$dateinummer,$PHP_SELF,$index,$SERVER_NAME,$treffer_pro_seite,$suchwoerter,$suchtext,$grossschreibung,$ganzewoerter;
echo "<table width=\"500\" border=\"0\" align=\"center\"><tr><td>\n";
echo "<span style=\"font-size:13pt\"><b>Ergebnisse der Suche:</b></span><br><br>\n";
$treffer_anzahl=count($treffer["datei_url"]);
if ($treffer_anzahl==0) { echo "<span style=\"font-size:13pt\"><b><center><br><br>Leider nichts gefunden<br><br></center></b></span></td></tr></table>\n"; }
else
{
@array_multisort($treffer["woerter"],SORT_DESC,$treffer["vorkommnisse"],SORT_DESC,$treffer["datei_url"],$treffer["textstelle"],$treffer["mehr"]);
$suchtext=ereg_replace(" ",", ",$suchtext);
if (count($suchwoerter)>1) { echo "Gesuchte Wörter: "; } else { echo "Gesuchtes Wort: "; }
echo "$suchtext<br><br>\n";
$anfang=$index*$treffer_pro_seite+1;
$ende=$anfang+$treffer_pro_seite-1; if ($ende>$treffer_anzahl) { $ende=$treffer_anzahl; }
echo "<b>Treffer $anfang-$ende von insgesamt $treffer_anzahl Treffern, beste Treffer zuerst:<br><br>\n";
echo "</td></tr></table>\n";
for ($k=0;$k<$treffer_pro_seite;$k++)
{
$i=$index*$treffer_pro_seite+$k;
$platz=$i+1;
if ($platz<=$ende)
{
echo "<table width=\"580\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n";
$t=1;
$treffer["datei_url"][$i]=ereg_replace("\./","",$treffer["datei_url"][$i]);
$datei=fopen($treffer["datei_url"][$i],"r");
 while ($t<7)
 {
 $zeile=fgetss($datei,1000,""); $zeile=trim($zeile);
  if ($zeile!="")
  {
  echo "<tr><td height=\"16\" colspan=\"2\">";
  echo "<span class=\"t_nummer\">".$platz.".</span> <a href=\"".$treffer["datei_url"][$i]."\"><b>".$zeile."</b></a>";
  break;
  }
 $t++;
 }
fclose($datei);
if ($treffer["woerter"][$i]==1) { $woerter="Wort"; } else { $woerter="Wörter"; }
if ($treffer["vorkommnisse"][$i]==1) { $vorkommnisse="Vorkommnis"; } else { $vorkommnisse="Vorkommnisse"; }
echo "<p style=\"margin-top:0pt; margin-bottom:0pt\" align=\"justify\">\n";
echo $treffer["textstelle"][$i]."<br>\n";
echo "<small><b>Weitere Vorkommnisse: </b>".$treffer["mehr"][$i]."</small></p></td></tr>\n";
echo "<tr><td><a href=\"http://".$SERVER_NAME."/Intranet/".$treffer["datei_url"][$i]."\" target=\"_blank\">\n";
echo "<img src=\"Bilder\newwindow.gif\" width=\"14\" height=\"10\" border=\"0\">\n";
echo "&nbsp;http://".$SERVER_NAME."/Intranet/".$treffer["datei_url"][$i]."</a></td>\n";
echo "<td align=\"right\"><small><b>".$treffer["woerter"][$i]."&nbsp;".$woerter." | ".$treffer["vorkommnisse"][$i]."&nbsp;".$vorkommnisse."</b></small></td>\n";
echo "</td></tr></table><br><br>\n";
}
}
}
if ($treffer_anzahl>0) { echo "<center>Seite:&nbsp;&nbsp;&nbsp;\n"; }
$j=ceil($treffer_anzahl/$treffer_pro_seite)-1;
for ($i=0;$i<=$j;$i++)
 {
 $zahl=$i+1;
 if (($index+1)!=$zahl) { echo "<a href=\"$PHP_SELF?suchtext=$suchtext&index=".$i."&grossschreibung=".$grossschreibung."&ganzewoerter=".$ganzewoerter."\">"; }
 echo $zahl;
 if (($index+1)!=$zahl) { echo "</a>"; }
 echo "&nbsp;&nbsp;&nbsp;";
 }
if ($treffer_anzahl>0) { echo "</center>\n"; }
}
########### Ende des Suchmaschinenskripts ###########
?>
</body>
</html>
 
Auch PDF-Dateien werden da bestimmt durchsucht.... jedoch nix gefunden.
Warum?...öffne eine PDF-Datei mal mit einem gewöhnlichen Editor, dann siehst du es.
 
Falls es dir noch nicht aufgefallen ist, pdf ist keine herrkömmliches
Textdokument und kann auch nicht als solchen geöffnet werden.
Hierzu musst du diverse pdf-Funktionieren benutzen: [PHPF]pdf[/PHPF]

p.s.: In der Zeile wo du die Dateiendungen definierst ist ein " zu viel hinter "pdf".
 
Zurück