如果尝试使用heredoc声明以下变量$a,则似乎无法正确解析。但是,当我使用简单的=声明方法定义它时,它确实可以工作。我希望能够将其定义为一个Heredoc,因为必须一次调用很多HTML代码,在这个示例中,我只是出于说明目的对其进行了简化。$a = "<a href = \'http://www.google.com\'>Google</a>";echo " <div id = \"test\" ondblclick = \"document.getElementById('test').innerHTML = '$a';\"> Change Event </div>";// when the user clicks the text "Change Event",// it should turn into whatever $a is, in this case a link to Google先前的代码有效,但是当我尝试将其转换为heredoc时,某些内容无法正确解析。我尝试使用四种引号样式,“,\”,“和”\'是该变量位于JavaScript中代码中所需的引号样式,因为已经使用了其他三种样式,当我在一个简单的()方式。当我使用“或”时,代码将产生:当我使用'或\'时,代码产生:在两种情况下,=功能都不起作用。我不确定出了什么问题以及为何Heredoc无法解析其应有的方式。这是我制作Heredoc的尝试之一;我尝试之间的唯一区别是链接周围的引号样式。$a = <<<EOT <a href = \'http://www.google.com\'>Google</a>EOT;// as stated above, I have tried ", \", ', and \' 最佳答案 嗯,在尝试使用此方法的同时仍然使用heredoc ... .innerHTML中的双引号在打印到浏览器时必须转义,否则就会遇到问题。某些浏览器会很友好并会自动转义,但总的来说它们不会,而且,如果说实话,它们也不应该。我可以使此代码正常工作的唯一方法是从href属性中完全删除“”。确实不建议使用.innerHTML这样的方式,因为<a>标记现在包含技术上不兼容的HTML,但是它似乎可以在Firefox,IE 9(启用和禁用怪异模式)和Chrome中使用。$a = <<<EOT<a href=http://www.google.com>Google</a>EOT;$b = <<<EOT<div id="test" ondblclick="document.getElementById('test').innerHTML = '$a';">Change Event</div>EOT;echo $b;关于php - 在PHP生成的JavaScript中调用时,通过heredoc声明的PHP变量将无法正确解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7880063/
10-12 00:16