Re: eval and HEREDOC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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  ..

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




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux