2009-11-05 4 views
12

Nehmen wir an, ich die folgenden Datei - template.php:Führen Sie eine PHP-Datei, und geben das Ergebnis als String

<?php $string = 'Hello World!'; ?> 
<html> 
    <head> 
     <title>Test Page!</title> 
    </head> 
    <body> 
     <h1><?= $string; ?></h1> 
     <p>You should see something above this line</p> 
    </body> 
</html> 

Ich bin mir bewusst, dass ich file_get_contents() verwenden können, um den Inhalt der Datei als ein erhalten String, den ich dann beliebig manipulieren kann. file_get_contents() führt jedoch keine PHP-Anweisungen aus.

Ich habe erfolgreich cURL verwendet, um Zugriff auf die gerenderte Version der Datei zu bekommen, aber es scheint ziemlich langsam und klobig, Hinzufügen ziemlich viel Zeit für die Ausführung der Seite - was ich vorstellen würde ist aufgrund einer DNS-Suche wird durchgeführt.

Also, wie kann ich den Inhalt von template.php in eine Zeichenfolge - während mit PHP brauchbare?

+0

meinst du file_get_contents() richtig? –

+0

Ich tat es, danke, dass ich darauf hingewiesen habe. – EvilChookie

Antwort

37

Dies sollte es tun:

ob_start(); 
include('template.php'); 
$returned = ob_get_contents(); 
ob_end_clean(); 
+0

Ah hah! Erwischt! Vielen Dank! – EvilChookie

+0

Passen Sie auf, da, da die Datei enthalten ist & nicht auf eigene Faust ausgeführt wird, Sie möglicherweise komisches Verhalten bekommen. –

+0

Einschließlich der Datei scannt es und wenn es PHP gibt, wird es ausgeführt, als ob es als eigenständig bezeichnet wird. Wenn Sie das nicht meinen, könnten Sie dann genauer sein? – bisko

3

Wenn Sie diese innerhalb PHP brauchen nicht zu tun, könnten Sie ein PHP-Skript über die Befehlszeile und eine Pipe in eine Textdatei ausführen, wie also:

php -f phpFile.php > output.html 
+0

Obwohl dies nicht die richtige Antwort ist, ist es definitiv hilfreich, in der Zukunft zu wissen. – EvilChookie

Verwandte Themen