Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to execute and get content of a .php file in a variable?

Tags:

I want to get contents of a .php file in a variable on other page.

I have two files, myfile1.php and myfile2.php.

myfile2.php

<?PHP     $myvar="prashant"; //      echo $myvar; ?> 

Now I want to get the value echoed by the myfile2.php in an variable in myfile1.php, I have tried the follwing way, but its taking all the contents including php tag () also.

<?PHP     $root_var .= file_get_contents($_SERVER['DOCUMENT_ROOT']."/myfile2.php", true); ?> 

Please tell me how I can get contents returned by one PHP file into a variable defined in another PHP file.

Thanks

like image 775
djmzfKnm Avatar asked May 12 '09 06:05

djmzfKnm


People also ask

How can I get content of a PHP file?

The file_get_contents() reads a file into a string. This function is the preferred way to read the contents of a file into a string. It will use memory mapping techniques, if this is supported by the server, to enhance performance.

What is the difference between file_get_contents () function and file () function?

The file_get_contents() function reads entire file into a string. The file() function reads the entire file in a array, whereas file_get_contents() function reads the entire file into a string.


2 Answers

You have to differentiate two things:

  • Do you want to capture the output (echo, print,...) of the included file and use the output in a variable (string)?
  • Do you want to return certain values from the included files and use them as a variable in your host script?

Local variables in your included files will always be moved to the current scope of your host script - this should be noted. You can combine all of these features into one:

include.php

$hello = "Hello"; echo "Hello World"; return "World"; 

host.php

ob_start(); $return = include 'include.php'; // (string)"World" $output = ob_get_clean(); // (string)"Hello World" // $hello has been moved to the current scope echo $hello . ' ' . $return; // echos "Hello World" 

The return-feature comes in handy especially when using configuration files.

config.php

return array(     'host' => 'localhost',      .... ); 

app.php

$config = include 'config.php'; // $config is an array 

EDIT

To answer your question about the performance penalty when using the output buffers, I just did some quick testing. 1,000,000 iterations of ob_start() and the corresponding $o = ob_get_clean() take about 7.5 seconds on my Windows machine (arguably not the best environment for PHP). I'd say that the performance impact should be considered quite small...

like image 149
Stefan Gehrig Avatar answered Sep 28 '22 06:09

Stefan Gehrig


If you only wanted the content echo()'ed by the included page, you could consider using output buffering:

ob_start(); include 'myfile2.php'; $echoed_content = ob_get_clean(); // gets content, discards buffer 

See http://php.net/ob_start

like image 30
harto Avatar answered Sep 28 '22 05:09

harto