次のPHPコードを実行していました。
<?php
</script>
?>
解析エラーはなく、出力は" ?>" ( example ) でした。
同様のケースで、解析エラーが発生します。
<?php
</div>
?>
解析エラー: 構文エラー、予期しない '<' が ...
<?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