2009-11-05 13 views
12

Supponiamo che io ho il seguente file - template.php:eseguire un file PHP, e restituire il risultato come una stringa

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

Sono consapevole che posso usare file_get_contents() per ottenere il contenuto del file come un stringa, che posso quindi manipolare come richiedo. Tuttavia, file_get_contents() non esegue istruzioni PHP.

Ho usato con successo cURL per ottenere l'accesso alla versione renderizzata del file, ma sembra piuttosto lento e goffo, aggiungendo un bel po 'di tempo all'esecuzione della pagina - che immagino sia dovuto ad un Ricerca DNS eseguita.

Quindi, come posso ottenere il contenuto di template.php in una stringa - pur avendo PHP utilizzabile lì?

+0

vuoi dire file_get_contents() giusto? –

+0

Sì, grazie per averlo indicato. – EvilChookie

risposta

37

Questo dovrebbe farlo:

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

Ah ah! Gotcha! Grazie! – EvilChookie

+0

Attenzione però visto che il file è stato incluso e non è stato eseguito da solo, potresti avere un comportamento divertente. –

+0

L'inclusione del file lo esegue e se c'è PHP all'interno, viene eseguito come se fosse chiamato stand-alone. Se questo non è ciò che intendi, allora potresti essere più specifico? – bisko

3

Se non avete bisogno di fare questo all'interno PHP, si potrebbe eseguire uno script PHP da linea di comando, e il tubo in un file di testo, come quindi:

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

Sebbene questa non sia la risposta giusta, è sicuramente utile sapere in futuro. – EvilChookie

Problemi correlati