In PHP, why does </script> not show a parse error?
This must be because there are various ways of starting a block of PHP code:
<? ... ?>
(known asshort_open_tag
)<?php ... ?>
(the standard really)<script language="php"> ... </script>
(not recommended)<% ... %>
(deprecated and removed ASP-style tag after 5.3.0)
Apparently, you can open a PHP block one way, and close it the other. Didn't know that.
So in your code, you opened the block using <?
but PHP recognizes </script>
as the closer. What happened was:
<?php <----- START PHP</script> <----- END PHP?> <----- JUST GARBAGE IN THE HTML
In PHP, you can use the script
tag to open a PHP block.
So you can use
<script language="php"> echo 'hello world';</script>
So in your example you have mixed the normal open tag, <?php
, with the closing tag, </script>
. So the parser assumes that all the text after the closing script tag is normal HTML
.
Read more in Escaping from HTML.