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