在 PHP 中,为什么 </script> 不显示解析错误?

2022-08-30 06:25:49

我正在运行以下PHP代码:

<?php 
    </script>
?>

没有解析错误,输出为“”(示例)。?>

在类似的情况下,我确实得到了一个解析错误:

<?php 
    </div>
?>

解析错误:语法错误,意外的“<”...

为什么不给出相同的错误?<?php </script> ?>


答案 1

这肯定是因为有多种方法可以启动PHP代码块

  • <? ... ?>(称为short_open_tag)

  • <?php ... ?>(真的是标准)

  • <script language="php"> ... </script>(不推荐)

  • <% ... %>(在 5.3.0 之后已弃用并删除了 ASP 样式标记)

显然,你可以以一种方式打开一个PHP块,然后以另一种方式关闭它。不知道。

所以在你的代码中,你打开了块,但PHP识别为更接近。发生的事情是:<?</script>

<?php       <----- START PHP
</script>   <----- END PHP
?>          <----- JUST GARBAGE IN THE HTML

答案 2

在 PHP 中,您可以使用标记打开 PHP 块。script

所以你可以使用

<script language="php">
    echo 'hello world';
</script>

因此,在您的示例中,您将正常的开放标记 () 与结束标记 .因此,解析器假定结束脚本标记之后的所有文本都是正常的。<?php</script>HTML

有关详细信息,请参阅从 HTML 转义


推荐