【问题标题】:PHP parses JavaScript content inside heredocPHP 解析 heredoc 中的 JavaScript 内容
【发布时间】:2015-02-23 01:03:23
【问题描述】:
<?php
$javascript = <<<EOT
<script type="text/javascript">
function test () {
    return 'test test test \n test test test';
}
</script>
EOT;

echo $javascript;
?>

上面的\n被PHP解析为换行符,生成如下HTML源代码

    return 'test test test 
 test test test';

这会导致 JavaScript 语法错误:未终止的字符串文字。


我有一大段 JavaScript 代码,所以我不想像这样包装它们

$javascript = "<script type=\"text/javascript\">\nfunction test()...\n";

实际上 JavaScript 代码并没有直接回显到页面,而是传递给另一个函数,这就是我需要 PHP 变量的原因。


那么如何定义一个包含大量 JavaScript 代码而又不会引起问题的 PHP 变量呢?

有没有类似if / endif的方法?

<?php if (condition): ?>
html code...
<?php endif ?> 

【问题讨论】:

  • 改用NOWDOC。
  • 操作码中有一个变量,NOWDOC 会跳过它。使用输出缓冲。
  • @mario 将 EOT 更改为“EOT”工作
  • 展示自己的投票者

标签: javascript php html variables heredoc


【解决方案1】:

选项 1:使用NOWDOC,即对于 HEREDOC,' 单引号对于 " 双引号。

$javascript = <<<'EOT'
   ...\n...
EOT;

选项2:转义特殊字符:

$javascript = <<<EOT
    ...\\n...
EOT;

【讨论】:

    【解决方案2】:

    我的代码:

    $javascript = <<<'EOT'
    <script type="text/javascript">
    $demo = 'test';
    alert($demo);
    </script>
    EOT;
    echo $javascript;
    

    如果我使用“EOT”,那么我在 javascript 中的代码运行良好,但我使用 EOT,那么我的代码将理解 $dem 在 PHP 中是变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2016-08-24
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多