Я запускал следующий код PHP :
<?php
</script>
?>
Не было ошибок разбора, и вывод был " ?>
" ( пример ).
В подобных случаях я получаю ошибку разбора:
<?php
</div>
?>
Ошибка разбора: синтаксическая ошибка, неожиданное '<' в ...
Почему не <?php </script> ?>
выдает ту же ошибку?
php
syntax
parse-error
Ирфан
источник
источник
Ответы:
Это должно быть потому, что есть разные способы запуска блока кода PHP :
<? ... ?>
(известный какshort_open_tag
)<?php ... ?>
(стандарт действительно)<script language="php"> ... </script>
(не рекомендуется)<% ... %>
(устарел и удален тег в стиле ASP после 5.3.0)Очевидно, вы можете открыть блок PHP одним способом, а закрыть его другим способом. Не знал этого.
Таким образом, в вашем коде вы открыли блок, используя,
<?
но PHP распознает</script>
как ближе. Что случилось было:источник
<script language="php">
не рекомендуется.short_open_tag
директивой произошли некоторые изменения . В PHP 5.4<?=
сокращений<?php echo
больше не требуетсяshort_open_tag
. Переход между системами, где<?=
был доступен и не доступен, всегда расстраивал меня. php.net/manual/en/ini.core.php#ini.short-open-tag<?php ... ?>
: php.net/manual/en/language.basic-syntax.phpmode.phpВ PHP вы можете использовать
script
тег, чтобы открыть блок PHP.Так что вы можете использовать
Итак, в вашем примере вы смешали обычный открытый тег
<?php
с закрывающим тегом</script>
. Таким образом, синтаксический анализатор предполагает, что весь текст после закрывающего тега скрипта является нормальнымHTML
.Подробнее в Побег из HTML .
источник