EvilChookie
EvilChookie

Reputation: 573

Execute a PHP file, and return the result as a string

Let's assume I have the following file - template.php:

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

I'm aware that I can use file_get_contents() to get the contents of the file as a string, which I can then manipulate as I require. However, file_get_contents() doesn't execute PHP statements.

I have successfully used cURL to get access to the rendered version of the file, but it seems rather slow and clunky, adding quite a fair amount of time to the execution of the page - which I would imagine is due to a DNS lookup being performed.

So, how can I get the contents of template.php into a string - while having usable PHP there?

Upvotes: 16

Views: 9395

Answers (2)

Ryan Brunner
Ryan Brunner

Reputation: 14851

If you don't need to do this within PHP, you could execute a php script from the command line, and pipe it to a text file, like so:

php -f phpFile.php > output.html

Upvotes: 3

bisko
bisko

Reputation: 4078

This should do it:

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

Upvotes: 44

Related Questions