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

我正在运行以下PHP代码:

<?php 
    </script>
?>

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

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

<?php 
    </div>
?>

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

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


这一定是因为有各种方式启动一段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
    

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

    所以你可以使用

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

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

    阅读更多从HTML转义。

    链接地址: http://www.djcxy.com/p/69417.html

    上一篇: In PHP, why does </script> not show a parse error?

    下一篇: PHP Parse error: syntax error, unexpected T