In PHP, why does </script> not show a parse error?
Verified Answer (273 Votes) ✓
This must be because there are various ways of starting a block of PHP code:
<? ... ?>(known as
<?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
Answer #2 (37 Votes)
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
Read more in Escaping from HTML.