193 votos

En PHP, ¿por qué </script> no mostrar un error de análisis?

Se ejecuta el siguiente PHP de código:

<?php 
    </script>
?>

No hubo errores de análisis y la salida fue "?>" (ejemplo).

En casos similares, me pongo un error de análisis:

<?php 
    </div>
?>

Error de análisis: error de sintaxis, inesperado '<' en ...

¿Por qué no <?php </script> ?> da el mismo error?

273voto

Pekka 웃 Puntos 249607

Este debe de ser porque hay varias formas de iniciar un bloque de código PHP:

  • <? ... ?> (conocida como short_open_tag)

  • <?php ... ?> (estándar)

  • <script language="php"> ... </script> (no recomendado)

  • <% ... %> (desaprobados y retirados de estilo ASP etiqueta después de 5.3.0)

Al parecer, puede abrir un bloque en PHP de una manera, y cerca de la otra. No sabía que.

Por lo que en su código, que abrió el bloque usando <? pero PHP reconoce </script> como la más cercana. Lo que ocurrió fue:

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

37voto

Ahmad Puntos 4329

En PHP, puede utilizar la script etiqueta para abrir un bloque en PHP.

Así que usted puede utilizar

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

Así, en el ejemplo que usted ha mezclado el normal abierto etiqueta, <?php, con la etiqueta de cierre, </script>. Así, el analizador asume que todo el texto después del cierre de la etiqueta script es normal HTML.

Leer más en Escapar de HTML.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X