views:

247

answers:

2

hello all! i'm starting to work with php basics and i have some problem understanding how mix code with strings.

I found a great and useful style to print string blocks but i don't know the name and i'm not able to find examples.

the code below return me the error:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /web/htdocs/food/user/index.php on line 120

<?php   
$html_str = <<<STR
    <li><img alt="hello" src="$path_images/pencil.png"/><a title="hello" href="$path_pages/$page/action">Details</a></li>

STR;
print $html_str;
?>

can someone help me to find where i'm wrong and the name of this syntax style?

thanks v

+1  A: 

The name of the syntax is HEREDOC strings or "here documents".

But when I run your code on my server, I don't get the token errors that you do, though. Maybe your error is actually somewhere else?

Peter Bailey
thanks for your test, I tried with something more easy like this but the server return me the same error... $str = <<<STR hello STR; print $str; can it be some missing module in the server? thanks again
Vittorio Vittori
and thanks for the syntax name!
Vittorio Vittori
yes, i try the code on aruba.it server, but it should have all the php base components... i'll do a search!
Vittorio Vittori
A: 

I've found the problem!
in the example I've posted it can't return the error:

Working code

<?php
$str = <<<STRING
hello! this is a working string<br/>
and i can do too many things with heredoc syntax!
STRING;

print $str;
?>

Not working code

<?php
     $str = <<<STRING
     syntax error!<br/>
     syntax error!<br/>
     why?
     STRING;

     print $str;
?>

The problem are the tabs before the close tag STRING; which are considered part of tag, so the close tag is not interpreted "STRING;" but "        STRING;", that's why it doesn't work.

hope it come usefull for someone else.

Vittorio Vittori
http://www.codinghorror.com/blog/archives/001310.html
Peter Bailey