193

次のPHPコードを実行していました。

<?php 
    </script>
?>

解析エラーはなく、出力は" ?>" ( example ) でした。

同様のケースで、解析エラーが発生します。

<?php 
    </div>
?>

解析エラー: 構文エラー、予期しない '<' が ...

<?php </script> ?>同じエラーが発生しないのはなぜですか?

4

2 に答える 2

273

これは、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
于 2012-11-05T08:23:39.607 に答える