php Datei ausführen (nicht ausgeben) und in Avriable schreiben
Jossi
- php
Ich möchte meinegesamten html Ausgaben in einer Varibale speichern. Das geht bis auf Dateien die auch einen PHP Code inne haben.
$output= file_get_contents("testdatei.php");
so ist nur der reine Code in meiner $output Variable
$output= include("testdatei.php");
so wird er aber sofort ausgführt und ausgegeben, aber nicht in die Variable $output geschrieben.
Wie schaffe ich es das die Datei zwar ausgeführt wird, aber nicht ausgegeben, sondern eben die Ausgabe in die Variable $output geschrieben wird.
Jossi
Hallo Jossi,
Die Output-Control-Funktionen von PHP sind wohl das, was du suchst. Ein kleines Beispiel:
ob_start();
include('testdatei.php');
$variable = ob_get_clean();
Gruß
Julius
Hallo Julius!
Danke ich habe es jetzt so gemacht.
ob_start();
include('testdatei.php');
$variable= ob_get_clean();
ob_end_clean();
und bei zwei, oder mehr dann so:
ob_start();
include('testdatei.php');
$variable= ob_get_clean();
ob_start();
include('testdatei2.php');
$variable.= ob_get_clean();
ob_end_clean();
Hi,
Danke ich habe es jetzt so gemacht.
> ob_start();
> include('testdatei.php');
> $variable= ob_get_clean();
> ob_end_clean();
warum rufst du ob_end_clean() zweimal auf?
So long,
Martin
Hallo Martin,
ob_start(); include('testdatei.php'); $variable= ob_get_clean(); ob_end_clean();
warum rufst du ob_end_clean() zweimal auf?
ob_end_clean löscht zwar ebenfalls den Pufferspeicher, beendet aber auch das Puffern, das sollten laut Doku zwei verschiedene paar Schuhe sein:
ob_end_clean — Clean (erase) the output buffer and turn off output buffering ob_get_clean — Get current buffer contents and delete current output buffer
Quelle: Output Control Functions
Weniger doppelt gemoppelt wäre vielleicht:
$variable = ob_get_contents();
ob_end_clean();
Gruß
Julius
Hi,
ob_start(); include('testdatei.php'); $variable= ob_get_clean(); ob_end_clean();
warum rufst du ob_end_clean() zweimal auf?
ob_end_clean — Clean (erase) the output buffer and turn off output buffering ob_get_clean — Get current buffer contents and delete current output buffer
ah, mein Fehler - ich hatte zweimal "end" gesehen, anstatt einmal "get" und einmal "end".
Wer lesen kann, ist klar im Vorteil ...
So long,
Martin
Hallo Martin,
ah, mein Fehler - ich hatte zweimal "end" gesehen, anstatt einmal "get" und einmal "end".
Doppelt gelöscht, ist trotzdem doppelt gemoppelt, zumindest da hast du Recht :-) – Ist zwar nicht schlimm, aber der Perfektionist in mir schreit trotzdem...
@Jossi:
So sollte es noch ein wenig sauberer sein (die letzten beiden Zeilen beachten!):
ob_start();
include('testdatei.php');
$variable= ob_get_clean();
ob_start();
include('testdatei2.php');
$variable = ob_get_contents();
ob_end_clean();
Gruß
Julius
Hallo,
Ich möchte meinegesamten html Ausgaben in einer Varibale speichern.
Das geht bis auf Dateien die auch einen PHP Code inne haben.$output= file_get_contents("testdatei.php");
so ist nur der reine Code in meiner $output Variable
genau, so liest du ja auch nur den Dateiinhalt.
$output= include("testdatei.php");
so wird er aber sofort ausgführt und ausgegeben, aber nicht in die Variable $output geschrieben.
Korrekt.
Wie schaffe ich es das die Datei zwar ausgeführt wird, aber nicht ausgegeben, sondern eben die Ausgabe in die Variable $output geschrieben wird.
Output Buffering könnte dir weiterhelfen.
So long,
Martin
Hallo
Ich möchte meinegesamten html Ausgaben in einer Varibale speichern. Das geht bis auf Dateien die auch einen PHP Code inne haben.
$output= file_get_contents("testdatei.php");
so ist nur der reine Code in meiner $output Variable
Natürlich, file_get_contents
liest den Inhalt einer Datei in einen String ein. Der Inhalt ist bei einer Nichtbinärdatei der in der Datei befindliche Text.
$output= include("testdatei.php");
so wird er aber sofort ausgführt und ausgegeben, aber nicht in die Variable $output geschrieben.
include
ist keine Funktion mit einem Rückgabewert. Es wird eine Datei in den aktuellen Codekontext eingebunden. Handelt es sich um PHP-Code, wird er ausgeführt.
Wie schaffe ich es das die Datei zwar ausgeführt wird, aber nicht ausgegeben, sondern eben die Ausgabe in die Variable $output geschrieben wird.
Erzeuge im eingebundenen Code die Ausgabe.
<?php
// testdatei.php
$output = '<h1>Meine Ausgabe</h1>';
$output .= '<p>Hier steht drin, was immer drinstehen soll.</p>';
?>
<?php
// mache irgendwas
include("testdatei.php")
if (isset($output)) { // eventuell weitere Prüfungen
echo $output;
} else {
echo '<p>Es ist keine vorbereitete Ausgabe vorhanden.</p>';
}
?>
Tschö, Auge
Hi,
$output= include("testdatei.php");
so wird er aber sofort ausgführt und ausgegeben, aber nicht in die Variable $output geschrieben.
include
ist keine Funktion mit einem Rückgabewert.
es ist eine Art Zwitter. Die include-Anweisung kann auch wie eine Funktion verwendet werden, wobei die Klammern um das vermeintliche Argument (den Dateinamen) nicht zwingend nötig sind, es ist eben keine echte Funktion.
So long,
Martin
Hi Jossi,
$output= include("testdatei.php");
so wird er aber sofort ausgführt und ausgegeben, aber nicht in die Variable $output geschrieben.
Dein Script tut genau das, was du programmiert hast.
Was steht denn in dieser „testdatei.php“?
Bis bald