我正在运行以下PHP代码:
<?php </script> ?>
没有解析错误和 output was “ ?> ”(example) .
?>
在类似的情况下,我得到一个解析错误:
<?php </div> ?>
解析错误:语法错误,意外的'<'在......
为什么 <?php </script> ?> 没有给出同样的错误?
这一定是因为there are various ways of starting a block of PHP code:
<? ... ?> (称为 short_open_tag )
<? ... ?>
short_open_tag
<?php ... ?> (标准真的)
<?php ... ?>
<script language="php"> ... </script> (不推荐)
<script language="php"> ... </script>
<% ... %> (5.3.0之后弃用并删除ASP样式标记)
<% ... %>
显然,您可以单向打开PHP块,然后将其关闭 . 不知道那个 .
因此,在您的代码中,您使用 <? 打开了块,但PHP将 </script> 识别为更接近 . 发生了什么事:
<?
</script>
<?php <----- START PHP </script> <----- END PHP ?> <----- JUST GARBAGE IN THE HTML
在PHP中,您可以使用 script 标记打开PHP块 .
script
所以你可以使用
<script language="php"> echo 'hello world'; </script>
因此,在您的示例中,您将常规打开标记 <?php 与结束标记 </script> 混合 . 因此,解析器假定关闭脚本标记之后的所有文本都是正常的 HTML .
<?php
HTML
阅读Escaping from HTML中的更多内容 .
2 回答
这一定是因为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中,您可以使用
script
标记打开PHP块 .所以你可以使用
因此,在您的示例中,您将常规打开标记
<?php
与结束标记</script>
混合 . 因此,解析器假定关闭脚本标记之后的所有文本都是正常的HTML
.阅读Escaping from HTML中的更多内容 .