使用echo<<<<<<<

时间:2014-06-30 09:59:13

标签: php

我需要在页面上有一个if / elseif语句,它需要回显相当多的HTML行。为简单起见,我不想转义所有引号,而是希望PHP忽略引号,所以我使用echo <<<EOT .... EOT;

现在问题是编译得很好:

    if ($lang == "en") {
        echo <<<EOT
           some html
EOT;
    }

但这会引发syntax error, unexpected end of file

    if ($lang == "en") {
        echo <<<EOT
           some html
EOT;
    }
    elseif ($lang == "sp") {
        echo <<<EOT
           some html
EOT;                        
    }

显然,在导致问题的if / elseif中使用多个EOT。我该如何解决这个问题?或者更确切地说,这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

在第二个EOT;之后看起来你有空白区域所以你需要删除这些空格。 我在移除空白区域后对其进行了测试,并且可以正常工作。

因此,EOT;只有EOT;

的行中不能有空格
if ($lang == "en") {    
    echo <<<EOT
           some html
EOT;
}elseif ($lang == "sp"){
  echo <<<EOT
         some html
EOT;
} 

答案 1 :(得分:1)

heredoc开始之后和结束标记之前,

空格不应该显示:了解更多信息click here

              _____________No white space here
              |
             \/
  echo <<<EOT
    some html
 EOT;
/\
|_________No white space here