数码鹭岛论坛

标题: PHP用heredoc输出大段HTML [打印本页]

作者: 翔子    时间: 2010-11-19 10:21
标题: PHP用heredoc输出大段HTML
今天在做东西的时候用到了大文本块,以及需要动态进行解释,想起来用了HereDoc表示。编译器一直报错,反复检查了都没有错误为什么呢?

  1. <?php  
  2. if ( isset($_SESSION['user']) )   
  3. {   
  4. echo <<< eod  
  5. <div class="left">  
  6.     <dl class="style2">   
  7.         <dt class="top0">1</dt>  
  8.         <dt class="top0">2</dt>  
  9.         <dt class="top0">3</dt>  
  10.         <dt class="top0">4</dt>  
  11.         <dt class="top0">5</dt>  
  12.         <dt class="top0">6</dt>  
  13.     </dl>  
  14. </div>  
  15. eod;  
  16. }  
  17. else  
  18. {  
  19. echo <<< eod2  
  20. <div style="text-indent:2em; margin-top:10px">您还没有登录,请登录后再进行表格相关操作。</div>  
  21. eod2;  
  22. }  
  23. ?>
复制代码
后来才发现,原来在 echo <<< eod 这一行后面多了几个空格。

很重要的一点必须指出,结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是 \r。

如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。

<<< 可以让我们在PHP代码内实现一大段的HTML代码,并且可以在其中,使用PHP变量。

它叫文档句法,又称定界符。它的语法是"<<<"。用法是在其后提供一个标识符,然后在标识符后提供字符串,再在字符串后提供此标识符来结尾。注意,这里用的标志符是EOD,结束的那个标志要顶头写,不能有缩进和空格.




欢迎光临 数码鹭岛论坛 (http://www.clore.net/forum/) Powered by Discuz! X3.2