Eu estava executando o seguinte código PHP :
<?php
</script>
?>
Não houve erros de análise e a saída foi " ?>
" ( exemplo ).
Em casos semelhantes, recebo um erro de análise:
<?php
</div>
?>
Erro de análise: erro de sintaxe, inesperado '<' em ...
Por que não <?php </script> ?>
dá o mesmo erro?
php
syntax
parse-error
Irfan
fonte
fonte
Respostas:
Isso deve ser porque existem várias maneiras de iniciar um bloco de código PHP :
<? ... ?>
(conhecido comoshort_open_tag
)<?php ... ?>
(o padrão realmente)<script language="php"> ... </script>
(não recomendado)<% ... %>
(marca de estilo ASP descontinuada e removida após 5.3.0)Aparentemente, você pode abrir um bloco PHP de uma maneira e fechá-la da outra. Não sabia disso.
Então, no seu código, você abriu o bloco usando,
<?
mas o PHP reconhece</script>
como o mais próximo. O que aconteceu foi:fonte
<script language="php">
não é recomendado.short_open_tag
diretiva. No PHP 5.4, a<?=
abreviação de<?php echo
não requer mais oshort_open_tag
. Indo entre sistemas onde<?=
estava disponível e não disponível sempre me frustrou. php.net/manual/en/ini.core.php#ini.short-open-tag<?php ... ?>
: php.net/manual/en/language.basic-syntax.phpmode.phpNo PHP, você pode usar a
script
tag para abrir um bloco PHP.Então você pode usar
Portanto, no seu exemplo, você misturou a marca aberta normal,,
<?php
com a marca de fechamento</script>
,. Portanto, o analisador assume que todo o texto após a tag de script de fechamento é normalHTML
.Leia mais em Escapando do HTML .
fonte