views:

149

answers:

4

There is a header.php file and it contains some php codes that return HTML. I know I can use require, include to echo the results, but what I want to do is to store its processed output string into a variable.

In a page, I used:

$headerHTML=file_get_contents('header.php');

Then I got the PHP code output rather than the processed HTML output. I know adding http:// would help. But I prefer to keep using relative path, how can I tell the function to treat the php file correctly?

Note: I would like to continue to use this statement file_get_contents rather than using ob_start() if possible.

+1  A: 

Hi ,

You can check http://in2.php.net/manual/en/function.eval.php#56641 , hope it helps.

Thanks, Sourabh

Sourabh
+1  A: 

Don't use eval() - it's evil!

Use the relative local path an automatically map it to a absolute URL.

Alix Axel
+1  A: 

If URL wrappers are enabled and you want the output of header.php (and you don't want to keep session state) you could use $headerHTML=file_get_contents('http://yourdomain.tld/path/to/header.php');, though why you would want to do such a thing eludes me. Are you sure you're not trying to do something that could easily be solved by using templates and caching?

wimvds
+2  A: 

I'd rather use require() wrapped inside ob_start() and ob_get_clean(). Whats wrong with that?

Salman A
It seems this may be the best way.
bobo