【问题标题】:Is it possible to write javascript in php heredoc syntax?是否可以用 php heredoc 语法编写 javascript?
【发布时间】:2016-11-18 01:43:46
【问题描述】:

我正在尝试输出 Javascript 代码 heredoc 语法,我希望使用 PHP print_r 函数将其打印出来。有可能吗?

PHP:

<?php
function printR($val){
    echo "<pre>";
    print_r($val);
    echo "</pre>";
}

$str = <<<EOT
    var msg = "Hello my name is ";
    var name = "Jermaine Forbes";
    function writeIt(m,n){
        console.log(m+n);
    }
    writeIt(msg,name);
    EOT;

printR($str);
?>

(@FirstOne:我保留了EOT; 的身份,因为有*关于它的评论)

【问题讨论】:

  • TimoSta 是的,我收到一条错误消息,提示“第 50 行文件意外结束”
  • 即使可以,这也不是一个好习惯
  • 我删除了我的评论并将其扩展为一个答案。 @George 为什么这不是一个好习惯?
  • 这是不好的做法,因为您可以直接在 PHP 标记之外输出 Javascript。我不愿意维护以这种方式编写的代码,并且几乎肯定会重新编写它。

标签: javascript php heredoc


【解决方案1】:

是的,你可以。如果您希望字符串中只有 Javascript(没有 PHP 变量),我会使用 nowdoc 而不是 heredoc(在开头 EOT

周围使用单引号
$str = <<<'EOT'
            var msg = "Hello my name is ";
            var name = "Jermaine Forbes";
            function writeIt(m,n){

              console.log(m+n);
            }

            writeIt(msg,name);

EOT;

另请注意,结束分隔符必须单独位于最后一行。在它之前或之后不能有任何空间。您的代码不起作用,因为您缩进了EOT;From the docs:

警告:非常重要的一点是要注意带有结尾的行 标识符不得包含其他字符,分号 (;) 除外。 这尤其意味着标识符可能不会缩进,并且 分号前后不得有任何空格或制表符。

【讨论】:

  • 我没有尝试输出 javascript 以便它可以执行该功能。我正在尝试将其打印出来,以便您可以在网页上看到 javascript。有人编辑了我的描述,所以人们不确定我想要做什么
  • 好的,我明白了,我已经删除了我的结束语。答案是否有助于解决您的问题?如果是这样,请投票并选择它。否则,请告诉我它的不足之处,以便我学习写出更好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2011-07-11
  • 2014-08-19
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多