file_get_contents() - ein Rätsel

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe ein (zumindest für mich) sonderbares Verhalten von file_get_contents().

Ich mache folgendes:
1. Ich habe eine Index.php in der rufe ich mit file_get_contents() eine Navigation aus einer externen HTML-Datei auf. (Das funktioniert bestens).
2. Ich habe jetzt die Navigation.html in Navigation.php umbenannt und in der Index.php den Pfad angepasst (auch das funktioniert bestens).

Wenn ich jetzt jedoch folgendendes mache:
3. Ich habe in den HTML-Quelltext eine PHP-if-Abfrage eingebaut mit der ich etwas prüfe und anschließend passend zur Abfrage einen Link ausgebe oder eben dafür einen anderen (mit if + else) - also müsste ich egal wie die Abfrage ausgeht auch etwas dafür bekommen.

So nun mein problem.
Alles was ich hier mit echo ausgebe wird eben NICHT angezeigt - ich verstehe es nicht.
Der "normale" Quelltext ausserhalb von <?php ?> wird aber korrekt ausgegeben.
Wenn ich die Navigation.php im Browser aufrufe bekomme ich alles korrekt angezeigt - nur eben nicht mit file_get_contents().

So hier zu meiner verwirrenden Anfrage noch ein bischen Code.

index.php:
PHP:
$navigation = file_get_contents("./".$templateverzeichnis."/navigation.php");
$template = str_replace("[NAVIGATION]", $navigation, $template);
navigation.php:
PHP:
<div class="chromestyle" id="chromemenu">
<ul>
<li><a href="http://intranet/flugzeugreservierung/">Start</a></li>
<li><a href="http://intranet/flugzeugreservierung/details.php">Details</a></li>
<li><a href="http://intranet/flugzeugreservierung/preise.php">Preise</a></li>
<li><a href="http://intranet/flugzeugreservierung/kontakt.php">Kontakt</a></li>
<li><a href="http://intranet/flugzeugreservierung/impressum.php">Impressum</a></li>


<?php

if(!$_GET['login'])) {
  echo '<li><a href="http://intranet/flugzeugreservierung/login.php">Login</a></li>';
} else {
  echo '<li><a href="http://intranet/flugzeugreservierung/logout.php">Logout</a></li>';
}
?>



</ul>
</div>
Vielen Dank für euere Hilfe im voraus.
 
Die file_get_contents()-Funktion liest bloß den Inhalt der angegebenen Datei aus und gibt ihn wieder. Eine weitere Verarbeitung findet aber nicht statt. Du bekommst also den Inhalt der Datei wie du ihn auch in einem Texteditor bekommen würdest.
Du musst allerdings den Inhalt der Datei vom PHP-Interpreter auswerten lassen, was am einfachsten mit der include-Anweisung geht. Die Ausgabe kannst du dann puffern und so wieder weiterverarbeiten.
PHP:
ob_start();
inlcude "./".$templateverzeichnis."/navigation.php";
$navigation = ob_get_clean();
$template = str_replace("[NAVIGATION]", $navigation, $template);
 
Hallo Gumbo (alter Mitkämpfer ;) ),

wie immer hast du die besten Ideen - funktioniert wunderbar.

Vielen Dank!
 
Zurück