[Fwd: Re: Re: How to take output from an include, and embedit into a variable?]
am 26.09.2009 06:24:46 von Carl FurstYou mean like this ?
$file string = file_get_contents(urlencode($file_path));
$result = eval($file_string);
?>
Well I see a few problems with this. One is that scope is not lexical.
In other words if $foo exists somewhere in the script and $foo also
exists in $file_string then $foo will retain the value it was set to in
$file_string. That could lead to some debugging hell. Also, you would
have to collect the output and manually return it which means you would
have to keep an output cache which means you could only use scripts that
cached output and returned them explicitly. However, the flip side is
you could have a buffer declared in the local scope that collects the
output of $file_string and then put that in the message, but that is not
the same as:
$foo = include $bar; # this is, of course, impossible
Geert Tapperwijn wrote:
> Can't you just use the eval
> parse the code from the include file in it?
>
> .. or is there something I'm missing here?
>
> 2009/9/25 Carl Furst
>
>
>
> Jim Lucas wrote:
>
> Ashley Sheridan wrote:
>
>
> On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote:
>
>
> Mert Oztekin wrote:
>
>
> Output buffering will do it.
>
> Also 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 buffering
>
>
>
> 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 asking
>
>
>
> -----Original Message-----
> 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:
>
>
> I have an invoice table that is drawn on a
> number of pages, so I have
> 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"?
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
>
> That's just crazy talk. If you use fopen on a web URL,
> then it will
> always 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.uk
>
>
>
>
>
>
>
>
>
> Do 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.
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php