193 votes

En PHP, pourquoi </script> n'affiche-t-il pas une erreur d'analyse ?

J'exécutais ce qui suit PHP code :

<?php 
    </script>
?>

Il n'y a pas eu d'erreur d'analyse et le 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 est-ce que <?php </script> ?> donne la même erreur ?

273voto

Pekka 웃 Points 249607

Cela doit être dû au fait que il existe plusieurs façons de démarrer un bloc de code PHP :

  • <? ... ?> (connu sous le nom de short_open_tag )

  • <?php ... ?> (la norme en fait)

  • <script language="php"> ... </script> (non recommandé)

  • <% ... %> (déprécié et supprimé de la balise de style ASP 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é, c'est que

<?php       <----- START PHP
</script>   <----- END PHP
?>          <----- JUST GARBAGE IN THE HTML

37voto

Ahmad Points 4329

En PHP, vous pouvez utiliser l'option script pour ouvrir un bloc PHP.

Vous pouvez donc utiliser

<script language="php">
    echo 'hello world';
</script>

Ainsi, dans votre exemple, vous avez mélangé la balise ouverte normale, <?php avec la balise de fermeture, </script> . L'analyseur suppose donc que tout le texte après la balise de fermeture script est normal. HTML .

Lire la suite dans Échapper au HTML .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X