Datei scannen und <title> in eine Variable

con-f-use

Erfahrenes Mitglied
Ich hab in einem PHP-script den relativen Pfad zu einer HTML-Datei. Nun bräuchte ich das, was im <title></title>-Tag steht als String.
Ich lese mittels readdir innerhalb einer Schleife ein Verzeichnis aus und speichere die Dateinamen, die ich brauche in einem Array. In ein anderes oder von mir aus auch ein mehrdimensionales Array möchte ich jetzt eben den content im <title>-Tag.
Das hat den Sinn einer automatischen Verlinkung - die Datei ist der href und der content im <title> wird dann der Linktext.

PHP:
$direc = opendir ('.');
   $sample = "^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*.php";
   
   while ($file = readdir($direc)) {
   	if($file != "." && $file != ".." && ereg($sample,$file)) {
   		if(!is_dir($file)) {
   			$dir[]=$file;
   		}
   	}
   }
   closedir($direc);
   
   for($i=0;$i<count($dir);$i++){
 echo "<a href=\"".$dir[$i]."\" target=\"_self\">"./*HIER SOLL DER INHALT DES TITELS DER JEWEILIGEN DATEI HIN*/."</a>;
  }
Da das Script in viele der gescannten Dateien included werden soll, wäre es auch noch schön, wenn man noch irgentwie vergleichen könnte, ob es sich bei der gerade gescannten Datei nicht um die Datei handelt, von der aus das script aufgerufen wurde, weil die Datei nicht unbindigt selbst, bei den Links auftauchen soll - wozu haben Browser denn Reload-Button?.

Ich hoffe ihr könnt mir helfen.
Danke im Voraus!
 
Zuletzt bearbeitet:
Okay, den zweiten Teil hab ich schon allein gelöst - ich weiß, wie ich feststelle, ob es sich um die Datei handelt von der aus das script gestartet wird:

PHP:
$self = $PHP_SELF;
 $self = eregi_replace("^[\/]([_a-zA-Z0-9-]*\/{1})*","",$self);
So bekommt man nur den Dateinamen ohne den Pfad zur Datei und muss dann nur noch in der Schleife vergleichen
PHP:
if ($file != $self) { $dir[] = $file; }

Aber bitte helft mir noch beim auslesen des Tietels, ich weiß, dass ist keine besonders schwere aufgabe, aber ich hab einfach keinen Ansatz, wie ich das machen kann.
 
Schalte mal dein error_reporting auf E_ALL.

Das Beispiel funktioniert bei mir problemlos....der Fehler muss also woanders im Skript liegen.
 
Tut mir leid, keine Fehlermeldung und er zeigt nichts an, egal wie ich's mache. Hab jetzt gut ne halbe stunde dran rum gebastelt. Ich glaub ich bin einfach zu blöd oder hab' irgentwo was nicht gecheckt.
Kannst du mir einfach mal die ganaue Einbindung in das script von oben schreiben? Tut mir leid, dass ich dich drum bitten muss, aber ich hab einfach keine Ahnung was da falsch ist.
 
Hab das problem gelöst, war mal wieder ein totaler Idiotenfehler. Hier der fertige Code falls das Problem für andere auch interessant ist:
PHP:
directory = opendir(".");
   $self = $PHP_SELF;
   $self = eregi_replace("^[\/]([_a-zA-Z0-9-]*\/{1})*","",$self);
   
   while ( $file = readdir($directory) ) {
 	if(!is_dir($file) && $file != $self && ereg("^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*[\.php]$",$file)) {
   		$temp = fopen($file,"r");
   		preg_match("/<title>(.*)<\/title>/is", file_get_contents($file), $ti);
   		fclose($temp); unset($temp);
   		if ($ti[1]!="") {
   			$title[] = $ti[1]; unset($ti[1]);
   			$dir[] = $file;
   		}
   	}
   }
   closedir($directory);unset($directory,$self,$file);
   
   for($i=0;$i<count($dir);$i++){
   		   echo "<a href=\"".$dir[$i]."\" target=\"_self\">".$title[$i]."</a>";
   }
 
Zuletzt bearbeitet:
Zurück