Volver al índice Primeras páginas en PHP


Estructura de una página PHP: fragmentos PHP y fragmentos HTML

Una página PHP es un archivo de texto que contiene uno o varios fragmentos de código PHP y que también puede contener fragmentos de código HTML.

Los fragmentos de código PHP están delimitados por las etiquetas <?php (etiqueta inicial) y ?> (etiqueta final). Más adelante se comentan otros posibles delimitadores de fragmentos de código PHP.

Contenido del archivo PHP en el servidor: ejemplo.php Texto recibido por el navegador: http:// .../ejemplo.php
<?php
print "<p>Hola</p>\n";
?>
<p>Hola</p>

En una página PHP todo lo que no son fragmentos PHP son fragmentos HTML. Los fragmentos de código HTML no están delimitados por ninguna etiqueta.

Contenido del archivo PHP en el servidor: ejemplo.php Texto recibido por el navegador: http:// .../ejemplo.php
<?php
print "<p>Hola</p>\n";
?>
<p>¿Cómo estás</p>
<p>Hola</p>
<p>¿Cómo estás</p>

Cuando un navegador solicita una página PHP a un servidor, el servidor lee el archivo secuencialmente y va generando el resultado:

Cuando el servidor termina de leer el archivo, el servidor envía al navegador el resultado.

Es importante señalar que:

Los ejemplos siguientes muestran diferentes programas PHP que generan el mismo resultado:


En un fragmento PHP no pueden escribirse etiquetas HTML sueltas; el código HTML debe generarse siempre con instrucciones de PHP. El programa siguiente no puede ni siquiera ejecutarse y produce un error de sintaxis:

Este código no es correcto.

<?php
<p>Hola</p>
?>
Parse error: syntax error, unexpected '<' in ejemplo.php on line 2

Si en una misma página hay varios fragmentos PHP, se tratan como un único programa.

<?php
$saludo = "Hola";         // Se define una variable
print "<p>$saludo</p>";   // Se escribe el valor de la variable
?>
<p>Hola</p>
<?php
$saludo = "Hola";         // Se define una variable 
?>
<p>
<?php
print "$saludo";         // Se escribe el valor de la variable
?>
</p>
<p>Hola</p>

Volver al principio de la página


El delimitador <? ... ?>

El delimitador <? se llama etiqueta de apertura abreviada (short open tag).

Contenido del archivo PHP en el servidor: ejemplo.php Texto recibido por el navegador: http:// .../ejemplo.php
<?
print "<p>Hola</p>\n";
?>
<p>Hola</p> 

Desde hace años se desaconseja completamente su uso porque provoca conflictos con las instrucción de procesamiento xml (<?xml) de los documentos XML . Cada vez más, los servidores están configurados para no admitir ese delimitador, como se comenta en el apartado sobre la directiva short_open_tag de la lección de configuración de Apache y PHP.

Volver al principio de la página


El delimitador <?= ... ?>

El delimitador <?= es una abreviatura de la expresión <?php echo que se utiliza en muchos frameworks de PHP en los documentos que sirven de plantilla de generación de interfaces, sobre todo cuando estas plantillas las van a editar usuarios sin muchos conocimientos de programación (diseñadores gráficos, etc.).

Contenido del archivo PHP en el servidor: ejemplo.php Texto recibido por el navegador: http:// .../ejemplo.php
<?
$saludo = "Hola";
$despedida = "Adios";
?>
<p><?= $saludo ?></p>
<p><?= $despedida ?></p>
        
<p>Hola</p>
<p>Adios</p>

Antes de PHP 5.4, publicado en marzo de 2012, para poder usar este delimitador se necesitaba activar la directiva short_open_tag. El problema era que, como se comenta en el apartado anterior, desde hace años se aconseja no activar esa directiva para impedir el uso del delimitador <?. A partir de PHP 5.4 se ha resuelto este problema desvinculado el delimitador <?= de la directiva short_open_tag. por tanto, desde PHP 5.4, el delimitador <?= se puede utilizar sin limitaciones.

Volver al principio de la página


Comentarios en páginas PHP

En un fragmento PHP se pueden comentar líneas de código utilizando:

Estos comentarios no se añaden al código HTML generado por la página, por lo que no pueden verse en el navegador.

<p><strong>
<?php
// La instrucción print escribe texto en la página web
print "Hola"; // El comentario se puede escribir al final de la línea
?>
</strong></p>
<p><strong>Hola</strong></p>
<p><strong>
<?php
# La instrucción print escribe texto en la página web
print "Hola"; # El comentario se puede escribir al final de la línea
?>
</strong></p>
<p><strong>Hola</strong></p>
<?php
print "<p><strong>";
/* Dentro de un fragmento PHP no se pueden escribir
   etiquetas html sueltas, tienen que estar siempre
   incluidas en instrucciones print 
*/
?>
Hola
<?php
print "</strong></p>";
?>
<p><strong>Hola</strong></p>

Si se quieren escribir comentarios en los fragmentos HTML, hay que utilizar la etiqueta de comentarios de HTML <!-- .... -->.

Estos comentarios, como todo el código HTML situado en los fragmentos HTML, se incluyen sin modificaciones en el resultado, por lo que pueden verse en el navegador.

<p>
<?php
print "Hola";
?>
</p>
<!-- El texto anterior ha sido generado por PHP -->
<p>Hola</p>
<!-- El texto anterior ha sido generado por PHP -->

Si se quieren escribir comentarios en las hojas de estilo CSS, hay que utilizar la etiqueta de comentarios de C /* .... */.

Estos comentarios, como todo el código CSS situado en las hojas de estilo, se incluyen sin modificaciones en el resultado, por lo que pueden verse en el navegador.

html {
  background-color: #FF0000; /* #FF000000 es rojo */
}
html {
  background-color: #FF0000; /* #FF000000 es rojo */
}

Volver al principio de la página


Código HTML de páginas XHTML 1.0 Strict válidas

Si queremos crear páginas válidas HTML debemos generar código HTML válido, es decir, generar todas las etiquetas HTML necesarias. En este curso se generarán páginas XHTML 1.0 Strict.

El ejemplo siguiente muestra el código html de una página web XHTML 1.0 Strict válida con las líneas numeradas.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Página válida XHTML 1.0 Strict</title>
</head>

<body>
  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>
</body>
</html>

Volver al principio de la página


Generar el código HTML de páginas XHTML 1.0 Strict válidas

La página PHP debe incluir o generar todo el código HTML necesario. El ejemplo siguiente genera una página válida mediante un único fragmento PHP.

Nota: Dentro de la cadena todas las comillas están precedidas del carácter \.

<?php
print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
      \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
  <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-1\" />
  <title>Página válida XHTML 1.0 Strict</title>
</head>

<body>
  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>
</body>
</html>";
?>

En principio, el mismo código html podría generarse combinando fragmentos PHP y fragmentos HTML, como en el siguiente ejemplo con dos fragmentos PHP y tres fragmentos HTML:

Este código puede dar problemas.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<?php
print "  <title>Página válida XHTML 1.0 Strict</title>\n";
?>
</head>

<body>
<?php
print "  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>\n";
?>
</body>
</html>

Nota: El carácter \n incluido en los print es para generar un salto de línea en el código HTML.

El problema de este código es la primera línea (la declaración xml). Si en la configuración de php, la directiva short_open_tags está establecida en On, el intérprete PHP intentará procesar la primera línea como código PHP, generando un error.

La solución es generar la primera línea en un fragmento PHP, como en el ejemplo siguiente (el fragmento PHP ocupa una sola línea para ahorrar espacio):

<?php 
print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<?php
print "  <title>Página válida XHTML 1.0 Strict</title>\n";
?>
</head>

<body>
<?php
print "  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>\n";
?>
</body>
</html>

Nota:

Volver al principio de la página


Enlaces a hojas de estilo

Una página PHP puede enlazar a una hoja de estilo CSS exactamente igual que una página HTML, es decir, enlazando a la hoja de estilo mediante la etiqueta <link>.

Los siguientes ejemplos muestran el enlace a la hoja de estilo incluido en un fragmento HTML o generado por un fragmento PHP:

<?php 
print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <link href="estilo.css" rel="stylesheet" type="text/css" title="Hoja de estilo" />
<?php
print "  <title>Página válida XHTML 1.0 Strict</title>\n";
?>
</head>

<body>
<?php
print "  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>\n";
?>
</body>
</html>

<?php 
print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<?php
print "  <link href="estilo.css" rel="stylesheet" type="text/css" title="Hoja de estilo" />\n";
print "  <title>Página válida XHTML 1.0 Strict</title>\n";
?>
</head>

<body>
<?php
print "  <p>El código HTML de esta página es XHTML 1.0 Strict válido</p>\n";
?>
</body>
</html>

Volver al principio de la página

Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación: 27 de octubre de 2013

Creative Commons License
Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.