[print] austricksen

Enumerator

Mitglied Kamel
Moin!

Ist es möglich in PHP die Standardausgabe bzw. den print-Befehl so zu manipulieren, dass er in ein Dateihandle oder eine Variable schreibt?

Gruß
Enum
 
Wozu willst du dazu extra nen echo/print manipuliern!?
PHP:
<?php
//Variable zuordnen
$var = $var1;
$var = 'blubber';
//Variable in Funktion übergeben
$var = funtion($var1);
//$var beinhaltet dann den return-Wert der Funktion
?>
 
Also, ich kenne eine Möglichkeit.
PHP:
<?
    $calar;

    function cache($tring)
    {
        global $calar;
               $calar.= $tring;
    }

    print "ob_start();<br />";
    ob_start('cache');

    print "Das hier müsste gepuffert werden.<br />";
    print "Das auch.<br />";

    ob_end_clean();
    print "ob_clean();<br />";

    print $calar;    # oder fputs etc - was auch schon in der funktion geschehen könnte
?>
Allerdings finde ich sie sehr unschön, und wollte mich eigentlich nur nach Alternativen erkundigen. Ausserdem funktioniert das nur mit STDOUT - nicht mit STDERR...
 
Zuletzt bearbeitet:
Achso...
Basics kriegste hier gut vermittel: http://www.peterkropff.de

Jetzt versteh ich acuh was du meinst ^^
Die Funktion, die du da oben gepostet hast is nur zum definieren des Puffers und auch mehr oder weniger überflüssig in dem zusammen hang, da man da auch den php standart benutzen kann...

fopen(), fputs(), fclose() müssten die Befehle sein, die dir beim erstellen einer Datei aufm Web-Server helfen...

Wenn ich dich richtig verstehe willst du für deinen "User/Kunden" eine Text/PHP/oder sonstige Datei mittels php erzeugen udn dann aufm Web-Server abspeichern, bzw downloaden...
Und wenn ich mit dieser Annahme richtig liege, dann passt meine Antwort hoffentlich acuh ;)
 
Weder noch. Ich habe ein Skript, welches ein anderes mittels require einbindet. Vorher legt dieses Skript anhand der ($_GET-) Parameter fest, ob die Ausgabe in eine Datei geschrieben und/oder an den Client gesendet wird. fputs ist daher nicht zu gebrauchen, da print völlig ausreicht.
Das funktioniert auch alles ganz prima, nur würde ich gern auch die Ausgabe von STDERR - also auch die PHP-Fehlermeldungen - BEI BEDARF in eine sepearate Datei schreiben können.
 
Musste dann übers error_handling() abfangen...

Nu muss ich aba ma ganz dumm fragen...
Was is STDERR bzw STDOUT?

Ach ja, die Bedingungen für Datei oder Ausgabe udn so kannste am einfachsten machen, wenn du das Prozedere in eine Funktion packst und dort ne Variable einließt, die das definiert...
Bsp:
Du hast die Funktion CatchErr()..
Die Funktionsdefinition is dann ca so:
PHP:
<?php
function CatchErr($do=false)
{

}
?>
Wenn also $do beim aufruf nicht angegeben ist, dann werden keine Fehler ausgegeben...
Wenn statt dessen die Funktion so aufgerufen wird:
PHP:
<?php
$do=true;
CatchErr($do);
?>
Dann greift das ganze wida...

Klingt grad ziemlich kompliziert, aber so in der Art siehst im Prinzip dann aus...
In der Funktion überprüfst du diesen Parameter und handelst danach...
 
Zuletzt bearbeitet:
Leider werde ich gerade gezwungen mich mit PHP zu befassen, obwohl ich's eigentlich nicht mag. Die Tatsache das Standard-Datenströme (STDOUT etc.) nur mit Trixereien zu manipulieren sind, bestätigt mich mal wieder.
Übrigends kenne ich zwar error_reporting(); aber error_handling(); und dergleichen ist mir noch nicht untergekommen.
Und was Du da oben machst... wie soll mir das helfen? :confused::)
 
Oben hab ichgezeigt, wie man ne Funktion in php definiert und dieser Funktion Variablen übergibt...
Dies gibt dir die Möglichkeit
Vorher legt dieses Skript anhand der ($_GET-) Parameter fest, ob die Ausgabe in eine Datei geschrieben und/oder an den Client gesendet wird. fputs ist daher nicht zu gebrauchen, da print völlig ausreicht.
Ohne $_GET umzusetzen... Stellst du also dann selbst im Source ein...

Mit error_handling(); kannst du ne Funktion angeben, die den error_report abfängt und verarbeitet...

In der Tutorial und Snippet Sektion sind gute Beispiele zu finden, ansonsten hilft google auch imma wieder ;)
 
Ich habe ein Skript, welches ein anderes mittels require einbindet.
Meine momentane Lösung: das Skript packt einen try/catch Block um die require Anweisung, und schreibt die Fehler im Anschluss entweder in den Browser oder in die Datei. Funktioniert ebenfalls prima - nur eben nicht wirklich elegant, da die Fehler so nicht wie normal genau da stehen, wo sie verursacht wurden. Ausserdem bricht das Skript ab wo es sonst noch munter weiter machen würde...
 
Zurück