PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit "file_get_contents"


juergen
23.12.2004, 14:00:33
Hallo Experten,

ich habe ein Problem mit der funktion file_get_contents.

Ich lese den Dateiinhalt der startseite.php mit folgendem Script aus:

$content = file_get_contents($f);
$pattern = "=<span>(.*)</span>=i";
preg_match($pattern, $content, $matches);
$title = $matches[1];

Der Teil in der startseite.php der sich zwischen <span></span> befindet ist allerdings eine Variable. Nämlich das hier:
<span><?php echo $asdfghjkl; ?></span>
und genau dieser Teil wird auch ausgelesen. Da der Teil ein Verweistext ist sieht mein Link volgend aus:
<a href="../html/startseite.php?&sprache=deutsch"><?php echo $verweistext;?></a>.
Jetzt meine Frage:

Wie kann ich erzwingen das die Variable $verweistext geparst wird bevor ich die Dateie auslese.

Ich wüntsche Euch allen viel Spaß und eine wunderschöne Weihnacht.

Gruß Jürgen

yozek
26.12.2004, 12:00:58
indem die variable $f eine URI ist ;)



$f = '../start.php'; // passiert das, was du nicht willst
$f = 'http://url/start.php'; // liesst die Datei wie ein Browser aus



HTH

juergen
26.12.2004, 13:15:56
Hallo yozek,

danke für Deine Erklärung aber $f sind mehrere Dateien eines ausgelesenen Verzeichnisses!
Wenn es sich nur um eine handeln würde wäre ich schon fertig.
Ich habe Dir mal meinen gesammten Code aufgeschrieben.

Die navigation.php wird in allen Dateien des Verzeichnisses ../html/
($f)als Navigation includet.

navigation.php


include("../config/config_ini.php");
$dax = $PHP_SELF;
$fax = basename($dax);


$navi_files = "../html/"; //Ordner mit Dateien

$path = opendir($navi_files);
while(false !== ($file = readdir($path))) {
if($file != '.' && $file != '..') {
$files[] = $navi_files . $file;
sort($files);
}
}
closedir($path);



if(!is_array($files)) {
echo "<tr><td class="textrot" bgColor="$color" height="17">Es sind keine Datei vorhanden!</td></tr>";
} else {

foreach($files as $f)
{

$content = file_get_contents($f);
$pattern = "=<span>(.*)</span>=i";//Der Text soll als Verweistext der Links in der Navigation dienen
preg_match($pattern, $content, $matches);
$title = $matches[1];

$dex = $f;
$fex = basename($dex);
if ($fax == $fex) {
$fett = "<b>";
} else {
$fett = "";
}
if ($fax == $fex) {
$color = $linkbgcolor_b; //Hintergrundfarbe 2
} else {
$color = $linkbgcolor_a; //Hintergrundfarbe 1
}
echo "<tr><td bgcolor="$color" height="17">
<a href="$f&sprache=$sprache&spezial=$spezial">$fett$title</b></a>
</td></tr>n";

}
}
echo "</table>";

Danke für Deine Hilfe,
Gruß Jürgen

yozek
26.12.2004, 14:32:14
Hallo Jürgen,

auch wenn es sich ein wenig komplex anhören mag, kannst du mein Besipiel auf dein erweitern. Wichtig hierbei ist, dass die Dateien, die du eingelesen hast, auch von draussen (ggf. nur mit Passwordschutz durch htaccess-Datei) her aufrufbar sind. Konkret:

Du liest das eine Verzeichnis ein und bekommst als Array die Dateien, die du auslesen möchtest.

Ändere Deine Schleife soweit um:



#content = file_get_contents($f);
content = file_get_contents('http://username:password@www.abc.de/ver/zeichnis/der/ausgelesenen/Dateien/' . $f);


Das username:password ist dazu da, wenn beispielsweise eine HTACCESS Datei erstellt wurde, die nur Zugang nach Eingabe von Benutzername und Kennwort gewährt.

HTH

Gruss

juergen
26.12.2004, 15:33:48
Hallo yozek,

sorry, ich hatte Dich verstanden allerdings zu spät.
Natürlich ist mir das klar geworden. Allerdinks hab ich gleich
mit der Umsetzung begonnen und meine Domain eingegeben.


$root = "http://localhost/";

$navi_files = "$root/html/"; //Ordner mit Dateien

funktioniert aber auch nicht!