我实际上并不特别熟悉PHP或JQuery。这使得这个错误更加奇怪。考虑这两个代码示例。 (因为我在这篇文章大约五分钟内将它们一起攻击,所以它们过于简单和混乱 - 但是要说清楚。)
<?php
print<<<HERE
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1 /jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery- ui.min.js"></script>
</head>
<p>Error show</p>
<button id="targetbutton" style="height: 60px width: 100px">mouse in</button>
<script>
$("#targetbutton").mouseover(function()
{$("p").css("color", "red")
});
</script>
HERE;
?>
和
<?php
print<<<HERE
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
</head>
<p>Error show</p>
<button id="targetbutton" style="height: 60px width: 100px">mouse in</button>
<script>
/*
$("#targetbutton").mouseover(function()
{$("p").css("color","red")
});
*/
</script>
HERE;
?>
这两个代码块都会产生此错误: 解析错误:语法错误,意外&#39;(&#39;,期待变量(T_VARIABLE)或&#39; $&#39;在...第11行 (实际上第二个说...第12行 - 显然)
此代码有效:
<?php
print<<<HERE
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
</head>
<p>Error show</p>
<button id="targetbutton" style="height: 60px width: 100px">mouse in</button>
<script>
$("#targetbutton").mouseover(function() {
$("p").css("color", "red")
});
</script>
HERE;
?>
正如我所提到的,我把这个有点混乱和简单化的例子放在一起来说明问题。但是,我第一次看到我正在创建的格式良好的网站中的错误 - 因此代码美 - 或缺乏这样的 - 似乎不是问题。)因此出现了三个问题: 1.为什么PHP抛出有关非PHP代码的错误(第11行是在脚本标记内)? 2.为什么PHP会对注释掉的代码抛出错误? 为什么大括号的移动会突然解决所有问题? 自从我开始工作以来,这个问题是认识论的,但很有趣。
答案 0 :(得分:0)
在HEREDOC(和双引号字符串)中,{$
引入了插值变量或表达式。
如果要将内容转储到浏览器,请完全退出PHP模式,或使用NOWDOC:
print <<<'HERE'
Note single-quotes around keyword
You can now have anything you like here and PHP won't try
to mess with it.
HERE;