Webstatt.org - Community seit 2006 - 2012 (2024?)

Ausgabe von "Echofunktionen" ohne Cachefunktionen in Variablen

Avatar user-182
28.01.2007 20:46

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'zwinkern;
$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 Fettes Grinsen

    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:

    Seid ihr auch schon wix'r? xD