它就像任何其他编程语言一样 - 您只能使用特定的编程语言来完成某事。例如
<?php
$x = 42; // php variable assignment
alert($x); // javascript function call
这永远行不通。 `alert() 是一个 JS 函数,它(通常)在 PHP 中没有类似物,因此这会因未定义函数错误而死。
由于 PHP 可以嵌入到其他语言中,并且其他语言可以“嵌入”到 PHP 中,您必须在两者之间有明确的分隔符,这样编译器就可以分辨出一种语言的结尾和另一个开始。使用 php,可以通过对 JS 代码进行“回显”或“突破”PHP 模式来实现:
<?php
$x = 42;
?>
alert(<?php echo $x; ?>);
或
<?php
$x = 42;
echo 'alert(' . $x . ')';
归结为“上下文”。如果您处于 PHP 模式(例如在 <?php ... ?> 块中,您正在编写 PHP 代码,而您在其中使用的任何其他语言(html、JS)就 PHP 而言只是纯文本。
如果您“退出”了 PHP 模式,那么您处于周围块正在使用的任何语言环境中。
<script>
var x = 42;
<?php // some php code here that causes output />
</script>
在上述情况下,您的“上下文”是 javascript - PHP 导致输出的任何内容都必须在其嵌入的 Javascript 上下文中有效。
虽然
var x = <?php echo 42; ?>;
会起作用,因为42 是在该特定位置具有的有效文本位,因此具有无效
var x = <?php echo '</script>'; ?>;
这会产生无意义的
var x = </script>;