J'exécutais le code PHP suivant:
<?php
</script>
?>
Il n'y a eu aucune erreur d'analyse et la sortie était " ?>
" ( exemple ).
Dans des cas similaires, j'obtiens une erreur d'analyse:
<?php
</div>
?>
Erreur d'analyse: erreur de syntaxe, '<' inattendu dans ...
Pourquoi ne <?php </script> ?>
donne- t-il pas la même erreur?
php
syntax
parse-error
Irfan
la source
la source
Réponses:
Cela doit être dû au fait qu'il existe différentes façons de démarrer un bloc de code PHP :
<? ... ?>
(ditshort_open_tag
)<?php ... ?>
(la norme vraiment)<script language="php"> ... </script>
(non recommandé)<% ... %>
(balise de style ASP obsolète et supprimée après 5.3.0)Apparemment, vous pouvez ouvrir un bloc PHP dans un sens et le fermer dans l'autre. Je ne le savais pas.
Donc, dans votre code, vous avez ouvert le bloc en utilisant
<?
mais PHP reconnaît</script>
comme le plus proche. Ce qui s'est passé était:la source
<script language="php">
n'est pas recommandée.short_open_tag
directive. En PHP 5.4<?=
court pour<?php echo
ne nécessite plus leshort_open_tag
. Passer d'un système à un autre<?=
disponible ou non disponible m'a toujours frustré. php.net/manual/en/ini.core.php#ini.short-open-tag<?php ... ?>
également: php.net/manual/en/language.basic-syntax.phpmode.phpEn PHP, vous pouvez utiliser la
script
balise pour ouvrir un bloc PHP.Vous pouvez donc utiliser
Donc , dans votre exemple , vous avez mélangé l'étiquette ouverte normale,
<?php
avec la balise de fermeture,</script>
. L'analyseur suppose donc que tout le texte après la balise de script de fermeture est normalHTML
.Pour en savoir plus, échapper au HTML .
la source