2009-11-05 16 views
12

Załóżmy Mam następujący plik - template.php:Wykonaj plik PHP i zwraca wynik jako ciąg

<?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> 

Jestem świadomy, że mogę używać file_get_contents() aby uzyskać zawartość pliku jako ciąg, który mogę następnie manipulować zgodnie z wymaganiami. Jednak file_get_contents() nie wykonuje instrukcji PHP.

Udało mi się użyć cURL, aby uzyskać dostęp do renderowanej wersji pliku, ale wydaje się raczej powolny i niezgrabny, dodając całkiem sporo czasu na wykonanie strony - co, jak sobie wyobrażam, jest spowodowane Sprawdzanie DNS.

Jak więc wprowadzić zawartość template.php do ciągu znaków - mając przy tym użyteczny PHP?

+0

masz na myśli file_get_contents() prawda? –

+0

Zrobiłem, dziękuję za wskazanie tego. – EvilChookie

Odpowiedz

37

ten powinien zrobić:

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

Ah hah! Mam cię! Dzięki! – EvilChookie

+0

Uważaj jednak, ponieważ plik jest dołączany i nie jest wykonywany na własną rękę, dlatego możesz mieć zabawne zachowanie. –

+0

W tym pliku skanuje go i jeśli w środku jest PHP, jest wykonywany tak, jakby został wywołany jako samodzielny. Jeśli nie to masz na myśli, to czy możesz być bardziej konkretny? – bisko

3

Jeśli nie trzeba robić tego w PHP, można wykonać skrypt php z wiersza polecenia, a rura go do pliku tekstowego, jak więc:

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

Chociaż nie jest to właściwa odpowiedź, zdecydowanie warto wiedzieć w przyszłości. – EvilChookie

Powiązane problemy