Sunteți pe pagina 1din 10

Primeras pginas en PHP

Estructura de una pgina PHP: fragmentos PHP y fragmentos HTML


Comentarios en pginas PHP
Cdigo HTML de pginas XHTML 1.0 Strict vlidas
Generar el cdigo HTML de pginas XHTML 1.0 Strict vlidas
Enlaces a hojas de estilo

Estructura de una pgina PHP: fragmentos PHP y


fragmentos HTML
Una pgina PHP es un archivo de texto que contiene uno o varios fragmentos de cdigo
PHP y que tambin puede contener fragmentos de cdigo HTML.
Los fragmentos de cdigo PHP estn delimitados por las etiquetas <?php (etiqueta
inicial) y ?> (etiqueta final). Ms adelante se comentan otros posibles delimitadores de
fragmentos de cdigo 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 pgina PHP todo lo que no son fragmentos PHP son fragmentos HTML. Los
fragmentos de cdigo HTML no estn 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>Cmo ests</p>

<p>Hola</p>
<p>Cmo ests</p>

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

si la pgina contiene fragmentos HTML, el cdigo HTML se incluye sin


modificados en el resultado.
si la pgina contiene fragmentos PHP, se ejecutan las instrucciones que se
encuentran en los fragmentos de cdigo PHP. Si esas instrucciones generan
texto, el texto se incluye en el resultado.

Cuando el servidor termina de leer el archivo, el servidor enva al navegador el


resultado.
Es importante sealar que:

El navegador recibe una pgina web (es decir, nicamente cdigo HTML), no
recibe cdigo PHP.
Los fragmentos PHP tiene que generar las etiquetas HTML que se necesiten
para una correcta visualizacin de la pgina web en el navegador.
El navegador no puede distinguir en la pgina recibida, qu parte ha sido
generada en un fragmento PHP y qu parte se encontraba ya en un fragmento
HTML.
Como la pgina PHP se lee secuencialmente, el cdigo HTML generado por los
fragmentos PHP y el incluido en los fragmentos HTML se encuentran en el
mismo orden en que se encontraban los fragmentos en la pgina PHP.

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

Programa con un nico fragmento PHP


Contenido del archivo PHP en el servidor Texto recibido por el navegador
<?php
print "<p>Hola</p>\n";
print "<p>Cmo ests?</p>\n";
print "<p>Adios</p>\n";
?>

<p>Hola</p>
<p>Cmo ests?</p>
<p>Adios</p>

Programa con un fragmento PHP y un fragmento HTML


Contenido del archivo PHP en el servidor Texto recibido por el navegador
<p>Hola</p>
<?php
print "<p>Cmo ests?</p>\n";
print "<p>Adios</p>\n";
?>

<p>Hola</p>
<p>Cmo ests?</p>
<p>Adios</p>

Programa con dos fragmentos PHP y un fragmento HTML


Contenido del archivo PHP en el servidor Texto recibido por el navegador
<?php
print "<p>Hola</p>\n";
?>
<p>Cmo ests?</p>
<?php
print "<p>Adios</p>\n";
?>

<p>Hola</p>
<p>Cmo ests?</p>
<p>Adios</p>

En un fragmento PHP no pueden escribirse etiquetas HTML sueltas; el cdigo HTML


debe generarse siempre con instrucciones de PHP. El programa siguiente no puede ni
siquiera ejecutarse y produce un error de sintaxis:

Parse error: syntax error, unexpected '<' in ejemplo.php on line 2


<?php
<p>Hola</p>
?>

Si en una misma pgina hay varios fragmentos PHP, se tratan como un nico programa.
<?php
$saludo = "Hola";
print "<p>$saludo</p>";
variable
?>
<?php
$saludo = "Hola";
?>
<p>
<?php
print "$saludo";
variable
?>
</p>

// Se define una variable


// Se escribe el valor de la

<p>Hola</p>

// Se define una variable


<p>Hola</p>
// Se escribe el valor de la

Volver al principio de la pgina

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 aos se desaconseja completamente su uso porque provoca conflictos con
las instruccin de procesamiento xml (<?xml) de los documentos XML . Cada vez ms,
los servidores estn configurados para no admitir ese delimitador, como se comenta en
el apartado sobre la directiva short_open_tag de la leccin de configuracin de Apache
y PHP.
Volver al principio de la pgina

El delimitador <?= ... ?>


El delimitador <?= es una abreviatura de la expresin <?php echo que se utiliza en
muchos frameworks de PHP en los documentos que sirven de plantilla de generacin de
interfaces, sobre todo cuando estas plantillas las van a editar usuarios sin muchos
conocimientos de programacin (diseadores grficos, etc.).
Contenido del archivo PHP en el servidor: Texto recibido por el navegador: http://
ejemplo.php
.../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 aos 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 pgina

Comentarios en pginas PHP


En un fragmento PHP se pueden comentar lneas de cdigo utilizando:

// para comentar el resto de la lnea (como en C++)


# para comentar el resto de la lnea (como en la shell de Unix o en Perl)
/* */ para delimitar varias lneas (como en C)

Estos comentarios no se aaden al cdigo HTML generado por la pgina, por lo que no
pueden verse en el navegador.
<p><strong>
<?php
// La instruccin print escribe texto en
la pgina web
<p><strong>Hola</strong></p>
print "Hola"; // El comentario se puede
escribir al final de la lnea
?>
</strong></p>
<p><strong>
<?php
<p><strong>Hola</strong></p>
# La instruccin print escribe texto en la

pgina web
print "Hola"; # El comentario se puede
escribir al final de la lnea
?>
</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
<p><strong>Hola</strong></p>
*/
?>
Hola
<?php
print "</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 cdigo 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 cdigo 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 pgina

Cdigo HTML de pginas XHTML 1.0 Strict vlidas

Si queremos crear pginas vlidas HTML debemos generar cdigo HTML vlido, es
decir, generar todas las etiquetas HTML necesarias. En este curso se generarn pginas
XHTML 1.0 Strict.
El ejemplo siguiente muestra el cdigo html de una pgina web XHTML 1.0 Strict
vlida con las lneas 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=iso8859-1" />
<title>Pgina vlida XHTML 1.0 Strict</title>
</head>
<body>
<p>El cdigo HTML de esta pgina es XHTML 1.0 Strict vlido</p>
</body>
</html>

La etiqueta <?xml ... ?> (lnea 1) es una etiqueta opcional, pero recomendada.
No es una etiqueta XHTML, sino una declaracin XML que indica el juego de
caracteres que se va a utilizar en el resto del documento.
La etiqueta <!DOCTYPE ... > (lneas 2 y 3) s que es obligatoria. Esta etiqueta
indica el tipo de documento (DOCTYPE) de la pgina. Puesto que existen varias
versiones de HTML y XHTML (y cada versin permite unas etiquetas
diferentes), el navegador necesita saber a qu versin corresponde la pgina. La
etiqueta contiene la direccin web de la dtd (definicin de tipo de documento)
que especifica la versin del lenguaje de marcas utilizado en el documento (cul
es la estructura, qu etiquetas existen y qu atributos pueden tener).
La etiqueta <html> ... </html> (lneas 4 a 13) engloba todo el documento html.
El atributo xmlns especifica el espacio de nombres del documento. Los espacios
de nombres sirven para resolver el problema que aparece cuando en un mismo
documento se utilizan etiquetas de distintos lengujes de marcas, en los que
pueden coincidir algunos nombres. El espacio de nombres es como el "apellido"
de la etiqueta.
El documento html se divide a su vez en dos partes, la cabecera (<head> ...
</head>, lneas 5 a 8) y el cuerpo (<body> ... </body> , lneas 10 a 12).
o La cabecera <head> ... </head> (lneas 5 a 8) contiene informacin de
identificacin y control que en general no se muestra en la ventana del
navegador, aunque puede afectar a la presentacin (por ejemplo, los
enlaces a hojas de estilo).
Las etiquetas <meta /> estn pensadas para proporcionar
informacin sobre el documento a los programas que analicen la
pgina.
La lnea 6 del ejemplo informa del juego de caracteres empleado
en la pgina. Existen otros tipo de <meta /> . Por ejemplo, la
etiqueta <meta name="keywords contents="palabras, ms
palabras, etc." /> est pensada para que los buscadores sepan de
qu va la pgina (por desgracia, se ha abusado mucho de esta

etiqueta as que los buscadores no la toman prcticamente en


cuenta).
La etiqueta de ttulo <title> ... </title> (lnea 7) contiene el texto
que se muestra en la barra de ttulo de la ventana del navegador.
La etiqueta title es obligatoria y debe incluirse en todas las
pginas web.
El cuerpo (<body> .... </body>, lneas 10 a 12) contiene lo que se ver
en la ventana del navegador. En el ejemplo, contiene un nico prrafo
La etiqueta de prrafo <p> ... </p> contiene el texto que se
muestra en la ventana del navegador

Volver al principio de la pgina

Generar el cdigo HTML de pginas XHTML 1.0


Strict vlidas
La pgina PHP debe incluir o generar todo el cdigo HTML necesario. El ejemplo
siguiente genera una pgina vlida mediante un nico fragmento PHP.
Nota: Dentro de la cadena todas las comillas estn precedidas del carcter \.
<?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=iso8859-1\" />
<title>Pgina vlida XHTML 1.0 Strict</title>
</head>
<body>
<p>El cdigo HTML de esta pgina es XHTML 1.0 Strict vlido</p>
</body>
</html>";
?>

En principio, el mismo cdigo html podra generarse combinando fragmentos PHP y


fragmentos HTML, como en el siguiente ejemplo con dos fragmentos PHP y tres
fragmentos HTML:

<?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=iso8859-1" />
<?php
print " <title>Pgina vlida XHTML 1.0 Strict</title>\n";
?>
</head>
<body>
<?php
print " <p>El cdigo HTML de esta pgina es XHTML 1.0 Strict
vlido</p>\n";
?>
</body>
</html>

Nota: El carcter \n incluido en los print es para generar un salto de lnea en el cdigo
HTML.
El problema de este cdigo es la primera lnea (la declaracin xml). Si en la
configuracin de php, la directiva short_open_tags est establecida en On, el intrprete
PHP intentar procesar la primera lnea como cdigo PHP, generando un error.
La solucin es generar la primera lnea en un fragmento PHP, como en el ejemplo
siguiente (el fragmento PHP ocupa una sola lnea 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=iso8859-1" />
<?php
print " <title>Pgina vlida XHTML 1.0 Strict</title>\n";
?>
</head>
<body>
<?php
print " <p>El cdigo HTML de esta pgina es XHTML 1.0 Strict
vlido</p>\n";
?>
</body>
</html>

Nota:

En algunos editores que colorean el cdigo, como PSPad, la instruccin:


print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";

provoca un problema de visualizacin en el editor (en Eclipse no causa ningn


problema). PSPad cree que los caracteres ?> cierran el fragmento PHP y el

cdigo posterior ya no se colorea correctamente. Este problema se puede


resolver partiendo la cadena ?> en dos cadenas concatenadas mediante el
operador . (punto)) :
print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?" . ">\n";

Volver al principio de la pgina

Enlaces a hojas de estilo


Una pgina PHP puede enlazar a una hoja de estilo CSS exactamente igual que una
pgina 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=iso8859-1" />
<link href="estilo.css" rel="stylesheet" type="text/css" title="Hoja
de estilo" />
<?php
print " <title>Pgina vlida XHTML 1.0 Strict</title>\n";
?>
</head>
<body>
<?php
print " <p>El cdigo HTML de esta pgina es XHTML 1.0 Strict
vlido</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=iso8859-1" />
<?php
print " <link href="estilo.css" rel="stylesheet" type="text/css"
title="Hoja de estilo" />\n";
print " <title>Pgina vlida XHTML 1.0 Strict</title>\n";
?>
</head>

<body>
<?php
print " <p>El cdigo HTML de esta pgina es XHTML 1.0 Strict
vlido</p>\n";
?>
</body>
</html>

Volver al principio de la pgina


Esta pgina forma parte del curso "Pginas web con PHP" disponible en
http://www.mclibre.org
Autor: Bartolom Sintes Marco
ltima modificacin: 27 de octubre de 2013

Esta obra est bajo una licencia de Creative Commons Reconocimiento-CompartirIgual


3.0 Espaa.

S-ar putea să vă placă și