Re: Re: [PHP] Re: How to take output from an include, and embed it into a variable?
| From: | Carl Furst | Date: | Fri, 25 Sep 2009 02:09:42 +0000 |
| Subject: | Re: Re: [PHP] Re: How to take output from an include, and embed it into a variable? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-298348@lists.php.net to get a copy of this message | ||
Jim Lucas wrote:
Ashley Sheridan wrote:-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phpOn Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote:This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are askingAlso I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen("http://yoursite.com/folder/$file","r"); http://tr.php.net/function.fopen worth trying. Easier than output bufferingMert Oztekin wrote:Output buffering will do it.From: Puiu Hrenciuc [mailto:hpuiu@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include "...."; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit ......... Regards, Puiu Rob Gould wrote:-----Original Message-----all the logic in an include-file like this: include "invoicetable_bottom.php"; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include "invoicetable_bottom.php"?I have an invoice table that is drawn on a number of pages, so I have
That's just crazy talk. If you use fopen on a web URL, then it willalways return the output the script generates. That's how http works!
Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable options in your php.ini that are not on by default for security reasons, plus as Ben points out, you will need to filter out the scruff that is generated to capture just the data output from your include. Mind you that all of this also requires that the file that you are including is accessible via the web. It could be in a folder that is not web accessible. Sorry for the initial confusion!
Thanks, Ash http://www.ashleysheridan.co.ukDo you have php configured to compile files? Why not just backtick the php -f command?? <? $cmd = *escapeshellcmd*("/full/path/to/php -f $file"); $email_output =
$cmd;
# do something with $email_output
?>
Seems easier than a whole http call.. can be risky if the $file variable can be set by user input (big no no), but other than that.. seeems the simplest.