PHP 在 heredoc 中解析 JavaScript 内容


PHP parses JavaScript content inside heredoc

<?php
$javascript = <<<EOT
<script type="text/javascript">
function test () {
    return 'test test test 'n test test test';
}
</script>
EOT;
echo $javascript;
?>

上面的 ' 被 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 ?> 

选项 1:使用 NOWDOC,即 HEREDOC,就像'单引号对双引号"一样。

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

选项 2:转义特殊字符:

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

我的代码:

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

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