Re: [Fwd: Re: [PHP] Re: How to take output from an include, and embed it into a variable?]

2009-09-25 Thread Robert Cummings

Carl Furst wrote:

You 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


If you want the include to have it's own variable scope then wrap it 
with a function. If you want to assign the resulting value via a single 
call then wrap it in a function. Fortunately both of these combined 
require one thing... wrap it in a function.




Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Fwd: Re: [PHP] Re: How to take output from an include, and embed it into a variable?]

2009-09-25 Thread Carl Furst

You 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  function, and 
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:hp...@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 i