assign output of execution of PHP script to a variable?
Solution 1
Answer: To do that, you can use PHP's Output buffering/control. Here's some simple function that gets script output and returns it:
Code:
Things used:
ob_start()
ob_get_clean()
is_readable()
function getScriptOutput($path, $print = FALSE)
{
ob_start();
if( is_readable($path) && $path )
{
include $path;
}
else
{
return FALSE;
}
if( $print == FALSE )
return ob_get_clean();
else
echo ob_get_clean();
}
Usage:
$path = '../photos_page.php';
$html = getScriptOutput($path);
if( $html === FALSE)
{
# Action when fails
}
else
{
echo $html;
}
Solution 2
You can use output buffering. This will place all output, that would normally be sent to the client, into a buffer which you can then retrieve:
ob_start();
include '../photos_page.php';
$html = ob_get_contents();
ob_end_clean();
If you wish, you can place this functionality into a function to have it work as you described:
function parse_my_script($path)
{
ob_start();
include $path;
$html = ob_get_contents();
ob_end_clean();
return $html;
}
This, of course, assumes that your included file doesn't require the use of global variables.
For more information, check out all the output control functions:
http://www.php.net/manual/en/ref.outcontrol.php
Solution 3
This should do the trick:
ob_start();
require('../photos_page.php');
$html = ob_get_contents();
ob_end_clean();
Solution 4
You'll want to try file_get_contents
$html = file_get_contents("http://www.yourwebsite.com/pages/photos_page.php");
//this will not work since it won't run through web server
//$html = file_get_contents("../photos_page.php");
Solution 5
You want to have a look at the method ob_start() and ob_flush(), ob_get_contents(), etc. http://us.php.net/manual/en/ref.outcontrol.php
This will allow you to output data from your PHP file into a specific variable.
You should think about rewriting though of course :)
So basically:
ob_start();
include('yourfile.php');
$html = ob_get_contents();
ob_end_clean();
Matt
I like Linux [Ubuntu is my favorite], languages I know include PHP, HTML, JavaScript, jQuery and BASH. I'm also learning Visual C#.
Updated on July 07, 2022Comments
-
Matt almost 2 years
I made a website, I probably didn't do it like I should have, but I was new to PHP at the time. So in order to save me lots of frustration of trying to re-write a script to display photos on my site, I need to run a *.php file, and make the output if it go into a var called "$html". I know it might sound strange, but that's what I need.
From inside index.php, I include photos.php; In photos.php, I need to declare $html with the output of a script called photos_page.php;
For example:
$html = parse_my_script("../photos_page.php");
Thank you
-
Admin almost 13 yearsNope, he wants the script's output.
-
akashivskyy almost 13 yearsBut file_get_contents returns output!
-
Dutchie432 almost 13 years@Kashiv: If I'm not mistaken, this function returns output only if you are fetching the php page through a web server.
file_get_contents("../photos_page.php")
won't work. In this case, you will be retrieving the file locally. Needs something likefile_get_contents("http://www.domain.com/photos_page.php")
-
webbiedave almost 13 yearsThis unnecessarily creates a web request which uses many more resources than just simply using an output buffer.
-
Matt almost 13 yearsThanks, your code works. however, my code is so not-cool, that I decided to just include() it from the main index.php file.
-
Matt almost 13 years@delnan is right. I do want the output. However, the whole stupid variable thing was not working right. Maybe because I was laoding "A" [index.html] which loads "B" [photos.php] which loads "C" [photos_page.php], and ... well it's too complicated to explain, I've decided to work it another way.
-
Raul Chiarella about 2 yearsHello! I am sorry, i didn't understand your question very well... I have the following PHP line: shell_exec("find ../ -name 'MY_FILE.pdf'") - I want to assign this output (Which returns a directory, with the location of the file) as a usable string to a var called $pdf_path ... I tried using your function but coul'nt figure out how to work with it...