@Vincent: no, the short tags are not off. @Jim: This seamns to work fine: $template = file_get_contents(pathTemplates.$this->dir.$this->tpl); ob_start(); $template = eval('?>'.$template); $template = ob_get_clean(); Thanks! Best wishes! Sorin -- Sorin Buturugeanu http://www.soin.ro On Wed, Jul 21, 2010 at 1:45 AM, <lists@xxxxxxxxx> wrote: > > > > On Wed, 21 Jul 2010 01:04:12 +0300, Sorin Buturugeanu <mail@xxxxxxx> wrote: >> Hello Vincent and thank you for your reply :). >> >> That's true, I forgot to explain how I got to using HEREDOC, so .. >> >> Using eval(file_get_contents($file)) just outputs the result on the >> spot and I need >> to get the whole output (without echoing it) and do some more things with >> it. >> >> require_once() doesn't fit here (from what I can tell), because it >> would still just >> include the file in echo the output. >> >> I think there must be a solution, but I'm missing something here .. > > > Check out the ob_* functions > > You could do this > > ob_start(); > > include "/your/file.php"; > > $output = ob_get_clean(); > > echo $output; > > Jim > >> >> Thanks again! >> >> -- >> Sorin Buturugeanu >> http://www.soin.ro >> >> >> On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent <daevid@xxxxxxxxxx> >> wrote: >>> >>> > -----Original Message----- >>> > From: Sorin Buturugeanu [mailto:mail@xxxxxxx] >>> > Sent: Tuesday, July 20, 2010 2:11 PM >>> > To: php-general@xxxxxxxxxxxxx >>> > Subject: eval and HEREDOC >>> > >>> > Hello, >>> > >>> > I am having trouble with a part of my templating script. I'll >>> > try to explain: >>> > >>> > The template itself is HTML with PHP code inside it, like: >>> > >>> > <div><?=strtoupper($user['name']);?></div> >>> > >>> > And I have the following code as part of the templating engine: >>> > >>> > $template = file_get_contents($file); >>> > $template = "return <<<TEMPLATE\n".$template."\nTEMPLATE;\n"; >>> > $template = eval($template); >>> > >>> > The problem is that the eval() HEREDOC combination gives the >>> > following output: >>> > >>> > <?=strtoupper(Array['time']);?> >>> > >>> > If in the HTML file (template) I use >>> > >>> > <div><?=strtoupper({$user['name']});?></div> >>> > >>> > I get <?=strtoupper(username);?> as an output. >>> > >>> > I have tried closing the php tag like this: >>> > >>> > $template = "return <<<TEMPLATE\n?>".$template."\nTEMPLATE;\n"; >>> > >>> > but the extra ?> only gets outputed as HTML. >>> > >>> > This is my first post to this mailing list, so I great you >>> > all and thank you for any kind of solution to my problem. >>> >>> Why are you using HEREDOC to begin with? I personally find them to be >> ugly >>> and more trouble than they're worth. >>> >>> You can write the same thing as this I think (untested): >>> >>> $template = eval(file_get_contents($file)); >>> >>> But you might also consider using "include_once" or "require_once" >> instead >>> of this "eval()" business. >>> >>> Also note, that a string can span more than one line and have variables >> in >>> it. It can even be used with code, so HEREDOC is again useless for most >>> situations: >>> >>> $foo = " >>> Hello $name,\n >>> \n >>> Today is ".date('Y-m-d')."\n >>> \n >>> Lorem ipsum dolor sit amet, consectetur adipiscing elit. >>> \n >>> Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue >>> metus, mattis a sollicitudin in, placerat vitae elit. >>> \n >>> Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris. >>> "; >>> >> >> -- >> 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 > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php