В PHP, почему не отображается ошибка синтаксического анализа?
Я запускал следующий PHP код:
<?php
</script>
?>
Ошибок синтаксического анализа не было, и вывод был "?>
" ( пример).
В подобных случаях я действительно получаю ошибку синтаксического анализа:
<?php
</div>
?>
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный ввод '<'...
Почему <?php </script> ?>
не выдает ту же ошибку?
2 answers
Это должно быть потому, что существуют различные способы запуска блока PHP-кода:
<? ... ?>
( известный какshort_open_tag
)<?php ... ?>
( стандарт действительно)<script language="php"> ... </script>
( не рекомендуется)<% ... %>
( устаревший и удаленный тег в стиле ASP после 5.3.0)
По-видимому, вы можете открыть блок PHP одним способом, а закрыть его другим. Я этого не знал.
Итак, в своем коде вы открыли блок с помощью <?
но PHP распознает </script>
как более близкий. То, что произошло, было:
<?php <----- START PHP
</script> <----- END PHP
?> <----- JUST GARBAGE IN THE HTML
В PHP вы можете использовать тег script
для открытия блока PHP.
Таким образом, вы можете использовать
<script language="php">
echo 'hello world';
</script>
Итак, в вашем примере вы смешали обычный открытый тег <?php
с закрывающим тегом </script>
. Таким образом, синтаксический анализатор предполагает, что весь текст после закрывающего тега скрипта является нормальным HTML
.
Подробнее читайте в Выход из HTML.