[PHP] php-datei ausführen und ausgabe zwischenspeichern

Thomas

fahrender Benutzer
ID: 19557
L
24 April 2006
871
86
hallöchen, ich hätte da mal eine frage :D

Ich habe folgendes php-script in einer datei namens datei.php
PHP:
<?php
$var = "irgend ein text";
// irgendwelche anderen funktionen
echo $var;
?>

nun habe ich eine weitere datei (welche aufgerufen wird) namens hallo.php
in dieser soll die datei.php ausgeführt werden und alles was sie ausgibt, soll dann in eine variable zur weiteren verarbeitung gespeichert werden.
folgendermaßen könnte es gehen:
PHP:
<?php
$andere_variable = 1;
$inhalt = "";

ob_start();
inlcude "datei.php";
$inhalt = ob_get_contents();
ob_end_clean();

// weiter mit $inhalt arbeiten...
?>

Problem: datei.php hätte dann aber z.B. zugriff auf $andere_variable, was es aber nicht haben darf :ugly:
kennt jemand eine "bessere" möglichkeit?
 
Wenn du nur die Ausgabe der Datei haben möchtest dann versuche es mal so:
PHP:
$datei = file_get_contents("datei.php");
 
Denkfehler:
Ein include() inkludiert den Code, d.h. du musst gar nichts ausgeben, sondern kannst alle Variablen aus der Datei einfach benutzen. Es ist ja dasselbe Script, auch wenn es in x verschiedenen Dateien liegt. Der Parser läuft nur einmal drüber.
 
Wie wärs mit Funktionen? Wenn du datei.php nicht verändern kann (wüsste nicht, warum du dann so einen Aufstand machen willst), dann kannste das immer noch in hallo.php lösen:

PHP:
<?php
$andere_variable = 1;

function datei_test(){
  $inhalt = "";
  ob_start();
  inlcude "datei.php";
  $inhalt = ob_get_contents();
  ob_end_clean();
  return $inhalt;
}

$inhalt = datei_test();

// weiter mit $inhalt arbeiten...
?>

oder du kannst das über eine Funktion in datei.php lösen:
PHP:
<?php
function datei_test(){
  $var = "irgend ein text";
  return $var;
}

?>

PHP:
<?php
include_once('datei.php');

$andere_variable = 1;
$inhalt = datei_test();

// weiter mit $inhalt arbeiten...
?>

Solltest du beide Dateien "in deiner Gewalt" haben, sehe ich keine Veranlassung das über einen unschönen Weg mit Ausgabe, Buffer und erneutem auslesen zu machen.. Die Daten sind ja schon da und können als Rückgabewert übergeben werden.
 
ja thehacker ich verstehe das schon, aber ich will was anderes bezwecken, also folgendermaßen läuft das ab:

man kann eine templatefile template.tpl erstellen:
HTML:
<html>
<head>{%title%}</head>
<body>
Der Name lautet: {%name%}
</body>
</html>

meine index.php macht neben tausend anderen sachen folgendes

-template.tpl einlesen und die wildcards auslesen und mit entsprechendem inhalt füllen

eine anwendung ist mein photocase:
so sieht eine template aus: https://www.skillcorp.de/upload/overview.tpl
und mit inhalt: https://www.photocase.skillcorp.de

nun hat man aber nur die möglichkeit wildcards zu nutzen, die mein script zur verfügung stellt. man soll aber eben die möglichkeit haben das script mit eigenem php-code zu "erweitern"

mein "template-parser" soll das dann wie folgt umsetzen

erweiterung.php
PHP:
<?php
echo "dies ist eine php-erweiterung...";
// php-code der z.b. die top-10 anzeigt
?>


HTML:
<html>
<head>{%title%}</head>
<body>
Der Name lautet: {%name%}
Die aktuelle Top10: {%include_erweiterung.php%}
</body>
</html>

der parser soll dann die wildcard die mit "include_" beginnt mit der ausgabe der datei erweiterung.php füllen.

dabei gehts mir nun nur darum, wie ich die datei ausführen kann und deren ausgabe zwischenzuspeichern um sie später ins template zu knallen.
 
joschilein, na der umweg über die funktion bringt mir ja nichts. angenommen in hallo.php gäbe es ein $passwort = "passwort";

dann könnte man es sich ja mit hilfe der datei.php so ausgeben lassen
PHP:
globals $passwort;
echo $passwort;
:ugly:

datei.php soll aber gänzlich keine zugriffsmöglichkeiten auf variablen oder ähnliches in hallo.php haben
 
PHP:
$moep=file_get_contents("https://www.example.com/file.php");
nicht die beste Lösung aber du erhälst garantiert nur die Ausgaben
 
PHP:
<?php
$var = 5;
$datei = file_get_contents("datei.php"); 
echo $var."<br>";
echo $datei;
?>

PHP:
<?php
$var = 5;
$datei = file_get_contents("./datei.php"); 
echo $var."<br>";
echo $datei;
?>

Funktioniert es so eventuell? Weil eigentlich dürfte da nix falsch sein oder dein Space erlaubt es nicht, wobei dann eine Fehlermeldung kommen dürfte...
 
nein geht auch nicht, es gibt auch keine fehlermeldung mit error_reporting(E_ALL);


edit: ok, mit kompletten domainnamen gehts...
so nun möchte ich aber noch wissen warum das nicht die beste lösung ist :D
 
schau Dir mal genau den Quelltext deiner hallo.php an da stimmt was nicht.
Dein PHP Code müsste als Quelltext
"5<br />irgend ein text" liefern aber im Quelltext der hallo.php steht haufen anderes Zeug drin. Sicher das du auf speichern und upload geklickt hast ^^.

*edit zu spät
 
nagut, ich weiß jetzt erstmal wie es gehen könnte, mal schauen ob ich noch eine geschicktere lösung finde. vielen dank jedenfalls für eure hilfe :)