PHP解析heredoc中的JavaScript内容

时间:2014-12-25 06:52:07

标签: javascript php html variables heredoc

<?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 ?> 

2 个答案:

答案 0 :(得分:6)

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

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

选项2:逃避特殊字符:

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

答案 1 :(得分:0)

我的代码:

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

如果我使用&#39; EOT&#39;然后我在javascript中的代码运行良好,但我使用EOT然后我的代码将理解$ dem是PHP中的变量