Formas de que PHP escriba dentro de HTML

Formas de que PHP escriba dentro de HTML
COMPÁRTELO:

Notemos que es posible la intercalación de órdenes en lenguaje PHP, alternándolas dentro de una página escrita en lenguaje HTML, tantas veces como sea necesario (pueden abrirse y cerrarse los tags de PHP tantas veces como queramos.

Por ejemplo:

<html>
<head>
<title>Hola</title>
</head>
<body>
<h1>Esto fue escrito estáticamente, en HTML</h1>
<?php
print (“<h2>Hola mundo! Esto lo escribió el intérprete de PHP</h2>”);
?>
<p>Esto ya estaba escrito en código HTML.</p>
<?php
print (“<p>Esto también lo escribió el software intérprete de PHP.</p>”);
?>
<p><a href=”index.php”><?php print (“Volver al Home del sitio, escrito por PHP”); ?></a></p>
</body>
</html>

Apertura y cierre de las etiquetas PHP

Notemos que el tag de PHP:

  1. Puede abrirse y cerrarse en la misma línea en que abrió, o puede cerrarse en otra línea diferente. Es indistinto.
  2. Puede intercalarse dentro de etiquetas HTML pre-existen.
  3. Puede generar nuevas etiquetas HTML mediante un echo o print
  4. Y puede abrirse y cerrarse muchas veces dentro de una misma página.

Los distintos tipos de tags de apertura y cierre de un bloque  escrito en el lenguaje PHP que podemos llegar a encontrar, son los siguientes:

1. Apertura y cierre estándar:

<?php xxxx ?>

O también

<?php
xxxx
?>

Esta es la única sintaxis universal: funciona siempre. Es la única forma recomendada y la que vamos a usar:

2. Apertura y cierre corto:

<? xxxx ?>

O también

<?
xxxx
?>

Esta sintaxis se conoce como short tags (etiquetas cortas). Fue muy usada en los primeros años de PHP, pero no es estándar. No todas las configuraciones del intérprete de PHP habilitan su uso, por lo que un código que utilice esta sintaxis puede dejar de funcionar al ser ubicado en un servidor con otra configuración más estricta. Por ese motivo, no la recomendamos.

3. Apertura y cierre mediante etiqueta script:

<script language=”php”>xxxx</script>

O también

<script language=”php”>
xxxx
</script>

Esta sintaxis, si bien todavía se soporta, es innecesariamente larga y es rarísimo encontrar algún código que la emplee. Por lo tanto, al no tener ninguna otra ventana añadida, no se recomienda su uso.

4. Tags estilo ASP:

<% xxx %>

O también

<%
xxxx
%>

Sintaxis al estilo del lenguaje de programación ASP de Microsoft: no es estándar, la posibilidad de usarla depende de la configuración del intérprete; por lo tanto, tampoco se recomienda su utilización.

En los ejemplos anteriores, hemos utilizado la función print, que “escribe” en el código fuente de la página que está por enviarse instantes después desde el servidor hacia al navegador del usuario, y que, como vemos, puede escribir no solamente texto, sino también etiquetas HTML como el “<p>” o “<h1>” del ejemplo, etiquetas que luego son interpretadas por el navegador como cualquier otro código HTML que hubiese estado escrito allí originalmente.

Escribir en el código con la función print()

El lenguaje PHP posee una función que es una de las más utilizadas de todas. Hablamos de la función print(), que le indica al software intérprete de PHP que “escriba” en el código fuente de la página que devolverá al navegador del usuario –aquello que pongamos entre sus paréntesis.

Ya hemos utilizado intuitivamente esta función en los ejemplos anteriores. Si lo que deseamos es que se escriba en el código de la página un texto, literalmente, debemos escribirlo entre comillas dentro de sus paréntesis.

Ejemplo:

<?php
print(“hola”);
?>

Si sólo tuviéramos que escribir texto y nunca código HTML, no tendríamos problemas pero, como debemos encerrar entre comillas el texto a mostrar, se nos planteará un problema a la hora de escribir código HTML que, a su vez tenga comillas dentro.

En el siguiente ejemplo, veremos por qué:

<?php
print(“<h1 class=”portada”>Bienvenidos</h1>”);
?>

Este ejemplo generará un error, pues la comilla ubicada luego del signo = está cumpliendo, sin querer, la función de cerrar la primera de las comillas –la que se abrió al inicio del print luego del paréntesis inicial- y, por lo tanto, el tramo de texto se da por concluido y al resto que sigue a esa comilla el software intérprete de PHP no sabe cómo tratarlo, y lo advierte mostrando un mensaje de error en la pantalla.

Una posible solución al problema de las comillas es desactivar (a esto se de denomina “escapar”) todas las comillas dobles intermedias, una por una, para que no den por concluida la cadena de texto antes de que lleguemos a la última comilla doble que indica el término de la función print.

El carácter de escape es la barra intertida \ y sirve para no ejecutar el carácter que le sigue inmediatamente como si fuera parte de una orden del lenguaje PHP, sino que lo considera como una letra más que debe ser escrita literalmente.

Por esta razón, el ejemplo anterior quedará así:

<?php
print (“<h1 class=\”portada\”>Bienvenidos</h1>”);
?>

Esto funciona muy bien en frases cortas, pero el mayor inconveniente o molestia que nos puede causar surge cuando tenemos que imprimir largos bloques de código HTML, ya que es muy probable que esos bloques (tal vez páginas enteras) ya los tengamos escritos previamente, generados por nuestro editor de código HTML, y casi es seguro que poseerán numerosas comillas dobles.

En estos casos, estaríamos obligados a la tediosa tarea de encontrar las comillas una por una, y “escaparlas” anteponiéndoles una barra invertida o, en su defecto, podríamos utilizar las herramientas de búsqueda y reemplazo de caracteres de alguno de los editores HTML para buscar una comilla y reemplazarla por la barra de escape más la comilla. Pero, ambos casos, sería una larga y aburrida tarea.

Mucho mejor que esto, sería utilizar comillas simples para delimitar el inicio y final del bloque de texto a imprimir:

<?php
print(‘<h1 class=”portada”>Bienvenidos</h1>’);
?>

¡Y problema solucionado!

Cómo funciona el comando “echo”

Este comando (no es una función) también puede utilizar optativamente comillas simples o dobles para delimitar lo que va a imprimir, de la misma manera que print. Pero, a diferencia de print, no es habitual envolver entre paréntesis lo que escribirá.

Ejemplo:

<?php
echo “Hola Mundo entre comillas dobles!”;
echo '<html>
<head>
<title>Envuelvo entre comillas simples</title>
</head>
<body>”Esto tiene comillas dobres, “muchas comillas”, y no importa”
</body>
</html>';
?>

Notemos de paso que el código que escribirá puede estar dividido en múltiples líneas (PHP ignora tanto los saltos de línea como los espacios en blanco), y también señalemos otro detalle al que todavía no habíamos prestado atención: para dar por terminada una sentencia u orden, se agrega un punto y coma al final de la línea.

Grandes bloques: heredoc

Cuando tenemos necesidad de escribir largos bloques de código HTML, incluso con variables intercaladas, podemos usar la construcción heredoc que nos permite escribir grandes cantidades de texto, sin necesidad de escapar caracteres en su interior.

Su uso es muy simple. Al inicio del bloque de texto, debemos colocar tres veces el signo “menor que”, de esta manera: <<< seguido de varios caracteres alfanuméricos (en el ejemplo que sigue hemos elegido EOT, pero pudo ser cualquier otra combinación de letras); luego, pegamos el bloque de texto y código HTML que escribiremos y, para finalizar, repetimos los mismos tres caracteres que indicaron el inicio del bloque.

<?php
Echo <<< EOT
<p>Este texto puede tener dentro “comillas” sin necesidad de escaparlas.</p>
<p>También procesa (reemplaza por su valor) las $variables que hibiera dentro del código</p>
<p>Esta construcción del lenguaje llamada heredoc es ideal para incluir largos bloques de código HTML.</p>
EOT;
?>

También podemos almacenarlo dentro de una variable:

<?php
$codigo = EOT
<p> Este texto puede tener dentro  “comillas” sin necesidad de escaparlas.</p>
<p>También procesa (reemplaza por su valor) las $variables que hubiera dentro del código. </p>
EOT;
echo $codigo;
?>

Si bien los caracteres  identificadores pueden formarse con cualquier combinación alfanumérica, por convención, se suele utilizar los caracteres EOT (end of text o final del texto).

Lo importante es que esos mismos caracteres no estén incluidos dentro del texto, ya que de suceder eso, el software intérprete de PHP considerará que allí termina el bloque, y provocará un mensaje de error al no saber qué hacer con el resto del texto.

Otra consideración es que estos caracteres indicadores del inicio y fin del bloque, deben incluirse al comienzo del renglón (sin dejar ni un solo espacio en blanco, ni tabulaciones, indentados de código, ni comentarios), y tampoco deben contener un salto de línea).

Por ese motivo, si escribimos este código en un editor de texto bajo Windows, podemos tener problemas al incluir un salto de línea (Enter) al final del renglón, ya que el salto de línea en Windows no es el carácter de nueva línea \n que esta construcción espera encontrar, sino que es \r\n.

Podemos hacer la prueba y, si vemos que al terminar la orden no se interrumpe la escritura del texto, deberíamos verificar que el renglón final esté completamente vacio de cualquier carácter extraño. Una vez confirmado que nuestro editor esté generando el salto de forma correcta, conviene que subamos al servidor por FTP el archivo empleado el modo Ascii (y no en binario), y desactivar la opción de “autodetectar” que la mayoría de programas de FTP contienen.  

Además de la facilidad de lectura y pegado en su lugar de los largos bloques de código, esta sintaxis incrementa la velocidad de interpretación del código en el servidor si la comparamos con el uso de varios echo o print seguidos.

Compártelo:

⇐Anterior


Mezclando PHP y HTML

Siguiente ⇒


Include y Require en PHP

Profesor de la Universidad de Guadalajara

Hugo Delgado Desarrollador y Diseñador Web en Puerto Vallarta

Profesional en Desarrollo y Posicionamiento Web desde hace más de 10 años continuos.
Contamos con más de 200 constancias y reconocimientos en la trayectoria Académica y Profesional, incluidos diplomados certificados por Google.

ARTÍCULOS RELACIONADOS:

0 Comentarios

 

Deja un Comentario

Recomendado para ti:

Historia, origen y evolución de HTMLHistoria, origen y evolución de HTML

El origen de HTML se remonta a 1980, cuando el físico Tim Berners-Lee, trabajador del CERN (Organización Eur...