首页 文章

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

提问于
浏览
192

我正在运行以下PHP代码:

<?php 
    </script>
?>

没有解析错误和 output was?> ”(example) .

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

<?php 
    </div>
?>

解析错误:语法错误,意外的'<'在......

为什么 <?php </script> ?> 没有给出同样的错误?

2 回答

  • 272

    这一定是因为there are various ways of starting a block of PHP code

    • <? ... ?> (称为 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
    
  • 37

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

    所以你可以使用

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

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

    阅读Escaping from HTML中的更多内容 .

相关问题