2009-11-10 135 views
1

我開始使用php基礎知識,並且我對理解混合代碼如何與字符串有一些問題。PHP語法錯誤T_ENCAPSED_AND_WHITESPACE

我發現了一個非常有用的風格來打印字符串塊,但我不知道名稱,我無法找到示例。

下面的代碼返回我的錯誤:
解析錯誤:語法錯誤,意想不到的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING在/web/htdocs/food/user/index.php 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; 
?> 

有人可以幫助我找到我錯在哪裏和這種語法風格的名稱?

感謝 v

+0

對我來說工作正常 – Greg 2009-11-10 15:10:11

回答

3

我發現問題了!
在我已無法返回錯誤的例子:

工作代碼

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

print $str; 
?> 

不工作密碼

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

    print $str; 
?> 

的問題,都在標籤關閉標記STRING;被認爲是標籤的一部分,所以close標籤不被解釋「STRING;」,但「                STRING;」,這就是爲什麼它不起作用。

希望它對其他人有用。

+0

http://www.codinghorror.com/blog/archives/001310.html – 2009-11-20 15:51:39

1

語法的名稱是HEREDOC strings或 「這裏的文件」。

但是,當我在我的服務器上運行你的代碼時,我沒有得到你所做的令牌錯誤。也許你的錯誤實際上是在別的地方?

+0

感謝您的測試,我嘗試了更簡單的方法,但服務器返回了同樣的錯誤... $ str = <<< STR hello STR;打印$ str;它可以是服務器中的一些缺失模塊嗎?再次感謝 – vitto 2009-11-10 15:27:07

+0

並感謝您的語法名稱! – vitto 2009-11-10 15:27:51

+0

是的,我嘗試aruba.it服務器上的代碼,但它應該有所有的PHP基本組件...我會做一個搜索! – vitto 2009-11-10 15:29:32