RE: eval and HEREDOC

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

 



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