Moin,
wo wir das Thema hier gerade hatten, wollt ich dazu auch eben noch etwas schreiben.
Jeder kennt Funktionen wie
highlight_string() oder
print_r(). Dazu muss man kein großer "Könner" sein.
Wendet man diese Funktionen an ist auch normalerweise kein echo notwenig, nein, in diesen Funktionen steckt schon das echo mit drin.
Eigentlich sehr praktisch, allerdings kann es dann doch ganz schön nerven, wenn man z.B. die Ausgabe der jeweiligen Funktion mal nicht sofort ausgeben will sondern z.B. um sie noch mittels Regex zu preparieren erst noch in einer Variable speichern will.
Die erste Möglichkeit wäre jetzt die Ausgabe mittels den vorgesehen PHP-Funktionen zu cachen, dass geht z.B. so:
<?php
ob_start();
highlight_file('meine-testdatei.php';
$output = ob_get_contents();
ob_end_flush();
// $output enthält so den Inhalt der "gehighlighteten" PHP-Datei "meine-testdatei.php"
?>
Diese Möglichkeit ist...
[list=1]
veraltet und
langam.
[/list=1] Dies merkt man spätestens dann, wenn man eine sehr besucherlastige Seite hat und Codeteile immer "on-the-fly" generieren lässt.
Um nun auf den eigentlichen Zweck dieser Anleitung zurückzukommen, gibt es auch eine wesentliche bessere Möglichkeit:
Im deutschen PHP-Manual nicht erwähnt lauert auch noch ein zweiter Parameter von
highlight_file() auf und wartet nur darauf entdeckt zu werden
Diesen Parameter beschreibt man im englischen PHP-Manual als
return; es wird ein boolischer Wert erwartet (
true/
false). Und genau das ist der "Schalter", der für das direkte Ausgeben verantwortlich ist. Steht er auf true, wird der Inhalt nur "per return" zurückgegeben und kann nun auch in einer Variable gespeichert werden.
So sieht das ganze aus:
<?php
$output = highlight_file('meine-testdatei.php', true);
// $output enthält so den Inhalt der "gehighlighteten" PHP-Datei "meine-testdatei.php"
?>
Jap, mehr ist das wirklich nicht -- der Code ersetzt komplett unseren oberen Code und ist dazu noch schneller, da das Zwischenspeichern entfällt.
Dieser zweiter Parameter funktioniert u.a. auch in Funktionen wie
print_r() und
highlight_string(); leider allerdings (noch) nicht in der Funktion
phpinfo().
____
Geschrieben am 28. Januar 2007, 21:43 Uhr von
Franky
Lizensiert unter: