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

我正在运行下面的PHP代码:

<?php </script> ?> 

没有parsing错误, 输出是?> ”( 例子 )。

在类似的情况下,我得到一个parsing错误:

 <?php </div> ?> 

parsing错误:语法错误,意外的“<”在…

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

这一定是因为有不同的方法来启动一段PHP代码 :

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

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

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

  • <% ... %> (不推荐使用5.3.0之后的ASP风格标签)

显然,你可以用一种方法打开一个PHP块,然后closures另一个块。 不知道。

所以在你的代码中,你使用<? 但是PHP可以识别</script> 。 发生了什么事是:

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

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

所以你可以使用

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

所以在你的例子中,你已经把普通的开放标签<?php和结束标签</script>混合在了一起。 所以parsing器假定closures脚本标记之后的所有文本都是正常的HTML

阅读更多从HTML转义