次の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