【问题标题】:Embedded PHP, cannot stop?嵌入式PHP,停不下来?
【发布时间】:2011-03-28 12:39:28
【问题描述】:

我现在有点困惑。我有这个代码:

<?php $this->head( ?>
    <style type="text/css">
        .error {
            background-color: #ccc;
            border: 1px solid #999;
            padding: 10px;
            width: 500px;
        }
    </style>
<?php ); ?>

我很确定你可以做到这一点。它非常类似于:

<?php if (true) { ?>
    Hei
<?php } ?>

实际上发生了错误:

解析错误:语法错误,意外的 ';',在 file.php 的第 1 行(代码的第 1 行)中需要 ')'

我怎样才能更好地解决它?

【问题讨论】:

  • 您是否启用了 PHP 短标签?
  • 你想要完成什么?这应该是一个条件语句还是你试图给 $this->head 赋值?

标签: php html css embedding


【解决方案1】:

如果您尝试将 html 作为变量传递,请使用 heredoc。

$var = <<<HTML
  <style type="text/css">
    .error {
      background-color: #ccc;
      border: 1px solid #999;
      padding: 10px;
      width: 500px;
    }
  </style>
HTML;

$this->head($var);

你不能这样做:

$variable = ?> <p>omgwtfbbq</p> <?;

这不是一个有效的语法。

Insead,你可以用引号括起来(单引号或双引号)

$variable = "<p>omgwtfbbq</p>";

【讨论】:

  • @Briedis,有什么理由避免使用 HEREDOC 吗?我很确定我在某个地方读到过 HEREDOC 是邪恶的什么的……是对的还是我可以毫无头绪地使用它?
  • 其实我并没有在实际项目中使用过heredoc,我只是想不起来语法,当我尝试使用它时,我去引用:) 不知道那是邪恶的,但也有一些缺点。编辑:做了一些挖掘,这里有一些pros and cons
  • HEREDOC 的主要问题是如何关闭它们。在文档结尾字符之前不能有任何字符,这些字符必须在自己的行中(这包括空格)。因此,如果您的 IDE 执行自动制表符,在您删除多余的制表符之前,您会收到语法错误。
  • 你的编辑器支持HEREDOC吗?如果您使用它,很多都不会,并且代码突出显示将无法正常工作。
  • 没有真正的理由避免使用 Heredoc,它只是不经常用于支持普通字符串,而且正如 dnagirl 所说,结束标签是喜怒无常的。它最适合用于此目的,以容纳较大的文本或 HTML 块。
【解决方案2】:

对多行文本使用 HEREDOC。

<?php
$style = <<<EOS

     <style type="text/css">
         .error {
             background-color: #ccc;
             border: 1px solid #999;
             padding: 10px;
             width: 500px;
         }
     </style>
EOS;
$this->head($style);
?>

【讨论】:

    【解决方案3】:

    您可以在 php 中使用HEREDOC 语法。

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 2021-12-26
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多