¿Qué es PHP? Tutorial para principiantes
PHP es uno de los lenguajes de programación más usados en la programación en el lado del servidor. Con el paso del tiempo, PHP se ha convertido en una parte esencial de muchas tecnologías web y páginas web modernas. Sin embargo, quienes empiezan a aprender PHP pueden encontrarse ante un reto. En este tutorial de PHP, te mostramos los fundamentos de este popular lenguaje de programación, así como sus operadores, bucles y funciones más importantes.
PHP tutorial: lo que debes saber
Nuestro tutorial se dirige sobre todo a principiantes. Para algunos de los ejemplos, es útil contar con conocimientos básicos en desarrollo web moderno y HTML. Para poder poner en práctica los ejemplos mostrados, necesitas disponer de:
- Servidor web con intérprete de PHP
- Instalar PHP
- Navegador web
- Editor de texto
Como servidor, recomendamos el entorno de desarrollo XAMPP que Apache Friends ofrece de forma gratuita para los sistemas operativos Windows, Linux y macOS. XAMPP es exclusivamente un servidor de pruebas. Los desarrolladores web pueden utilizar el paquete de software para configurar en muy poco tiempo un entorno de pruebas completo para scripts, páginas HTML y hojas de estilo. Sin embargo, no se garantiza el funcionamiento seguro como servidor web en Internet. Accede a instrucciones detalladas en nuestro tutorial sobre XAMPP.
- Rápido, seguro, flexible y escalable
- Certificado SSL/DDoS incluido
- Dominio y asesor personal incluidos
PHP básico: la sintaxis del lenguaje de scripts
Una vez hayas configurado tu servidor web local (por ejemplo, con ayuda de XAMPP), tienes que comprobar que PHP esté instalado correctamentey pueda ejecutar scripts.
Abre tu editor de textos preferido e introduce el siguiente script de PHP:
<?php
phpinfo();
?>
phpLas funciones son subprogramas que permiten externalizar partes del código de programa. Para evitar la redundancia, se definen las tareas recurrentes como funciones y se hace un llamamiento a las mismas con ayuda de un nombre de función. Los desarrolladores utilizan para ello funciones de PHP predefinidas o crean sus propios subprogramas.
Guarda el archivo de texto con el nombre test en formato .php (script PHP) y abre el servidor web. Siempre y cuando utilices el entorno de prueba de XAMPP, coloca test.php en el directorio de XAMPP en htdocs(C:\xampp\htdocs).
Se puede acceder al archivo del ejemplo introduciendo el siguiente URL en el navegador web: http://localhost/test.php
. En caso de utilizar otro servidor web o la configuración personalizada del software de XAMPP, selecciona el URL de la ruta del archivo correspondiente.
Al introducir el URL http://localhost/test.php
se está indicando al navegador web que solicite el archivo test.php al servidor web. El servidor Apache HTTP u otro software de servidor web abre el archivo en el directorio correspondiente. La terminación .php informa de que el archivo contiene código PHP. Ahora se pone en marcha el intérprete de PHP integrado en el servidor web, el cual hace un recorrido por el documento hasta dar con la etiqueta PHP de apertura <?php, la cual señala el comienzo del código PHP. Tras ello, el intérprete ya tiene la capacidad de ejecutar el código PHP y de generar una salida en HTML que se envía al navegador desde el servidor web.
Si PHP se ha instalado correctamente, aparecerá la página web siguiente como resultado de la ejecución del script:
La función phpinfo() consiste en la abreviatura del valor estándar phpinfo( INFO_ALL ), el cual ofrece información pormenorizada sobre la configuración de PHP en el servidor web. Si no se puede localizar ninguna versión de PHP, el navegador mostrará un mensaje de error o entregará el código PHP sin interpretar al navegador.
“Hello World!” – Así puedes crear texto con echo
Si la instalación de PHP se lleva a cabo sin ningún tipo de errores, ya se pueden escribir los primeros scripts propios. Para ello es apropiada la instrucción PHP echo . A diferencia de phpinfo(), echo no representa una función, sino que se trata, más bien, de una construcción del lenguaje que permite distribuir el siguiente string como texto.
Las palabras reservadas son instrucciones que se utilizan en PHP para controlar la ejecución de los programas. Entre las palabras reservadas se encuentran, además de echo, instrucciones como if, for, do, include, return, exit o die. A diferencia de las funciones, en este caso no se necesitan los paréntesis.
Crea un nuevo archivo PHP para tu primer script propio y escribe el siguiente código:
<?php
echo 'Hello World!';
?>
phpLa etiqueta de apertura <?php
da comienzo a un entorno de script. A esta le sigue tanto la palabra reservada echo como el string Hello World! entre comillas simples. Con la etiqueta ?>
se cierra el script. En este sentido hay que prestar atención al punto y coma que va detrás de la instrucción. En lugar de Hello World!, se puede utilizar cualquier otro texto.
Guarda el script con el nombre de hello.php en la carpeta htdocs de tu servidor web y accede al archivo a través del URL http://localhost/hello.php
en el navegador. Si el código se ha transmitido correctamente, ahora debería mostrarse en la ventana del navegador la secuencia de caracteres que has usado:
Cada texto que se emite con echo puede estar formado por etiquetas HTML en caso de ser necesario, las cuales son interpretadas por parte del navegador web tras la correspondiente especificación de HTML. Puedes comprobarlo tú mismo, por ejemplo, con el siguiente script:
<?php
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
phpAl hacer la solicitud al navegador web, se puede ver el resultado de la ejecución del script de la siguiente manera:
La secuencia de caracteres incluida en las etiquetas del <h1>
, es decir, Hello World!, es interpretada por el navegador como título de primer nivel y a esta le siguen un salto de línea automático y la etiqueta de párrafo <p>
.
En función de las necesidades, echo se puede emplear tanto con comillas sencillas (’) como con comillas dobles (“). Si se quiere emitir texto, no hay diferencia alguna con respecto al tipo de comillas que se escojan, pero esto cambia en cuanto las variables PHP entran en acción.
Variables
La palabra reservada echo resulta de una utilidad mayor que la propia emisión de texto, la cual puede implementarse también sin PHP y tomando HTML como base. La verdadera plusvalía de echo está basada en el hecho de que la instrucción permite generar textos de manera dinámica con ayuda de variables.
Los usuarios de PHP se pueden encontrar con variables que tienen, por ejemplo, la siguiente forma: $ejemplo
Cada variable consta del símbolo del dólar ($), seguido del nombre de la variable. Las variables se utilizan en los scripts de PHP para integrar datos externos en páginas web. En este sentido se puede hablar de valores muy variados que van desde números simples y cadenas de caracteres hasta textos completos o estructuras de documentos HTML.
PHP diferencia entre siete tipos de variables:
Tipos de variables | Descripción |
---|---|
String | Un string es una secuencia de caracteres, que puede tratarse de una palabra, de una frase, de un texto o de la totalidad del código HTML de una página web. |
Integer | Un integer es un número entero y sin decimales que puede ser positivo o negativo. |
Float | Un float es un número de punto flotante, es decir, un valor numérico con decimales. En los lenguajes de programación, la coma se escribe con un punto (.). PHP permite colocar hasta 14 caracteres detrás de la coma. |
Boolean | Las variables booleanas son el resultado de una operación lógica y solo comprenden dos constantes: TRUE (verdadero) y FALSE (falso). Este tipo de variables se aplica cuando se trabaja con condiciones. |
Array | Un array es una variable que puede albergar varios elementos. Se trata de una agrupación de diversos datos estructurados formando una matriz. |
Object | La variable object permite a los programadores definir tipos de datos propios y se aplica en la programación orientada a objetos. Las variables del tipo object no se incluyen en nuestro tutorial de PHP. |
NULL | NULL representa una variable sin valor. Para las variables del tipo NULL, este es el único valor. |
La administración central de los contenidos tiene lugar, en general, con ayuda de sistemas de bases de datos. Los valores para las variables pueden definirse directamente en el script. Este tipo de clasificación se realiza según el esquema siguiente:
$ejemplo = "Valor";
phpEl característico símbolo del dólar va seguido del nombre de la variable (en este caso ejemplo), el cual se une al valor entrecomillado con el símbolo de igualdad (=). Los valores para las variables del tipo integer y float no se escriben entre comillas (p. ej., $ejemplo = 24; o $ejemplo = 2.7;)
PHP te da la libertad de designar variables según tu arbitrio, pero surgen aquí ciertas limitaciones:
- Cada variable comienza con el símbolo del dólar.
- El nombre de las variables es una secuencia de caracteres formada por letras, números y guiones (p.ej., $ejemplo_1).
- Un nombre de variable válido siempre comienza con una letra o con un guion bajo ($ejemplo1 o $_ejemplo), pero nunca con un número (incorrecto: $1ejemplo).
- PHP distingue entre mayúsculas y minúsculas ($ejemplo ≠ $Ejemplo).
- Los nombres de las variables no pueden contener espacios o saltos de línea (incorrecto: $ejemplo 1)
- El usuario no puede hacer uso libre de las secuencias de caracteres reservadas por PHP para otros propósitos (p. ej., $this)
Veámoslo en un ejemplo:
<?php
$author = "John Doe";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>";
?>
phpLa etiqueta de apertura de PHP va seguida de la definición de la variable: en el caso de $author se utilizaría el valor John Doe. A la hora de ejecutar el script, la variable $author se sustituye por el valor John Doe cada vez que se haga mención a ella en el entorno del script. El siguiente gráfico muestra cómo se refleja esto en el navegador web.
Si ocurre un error y la página web no procede de John Doe, sino de su colega alemán Max Mustermann, la variable con el nombre $author tiene que adaptarse para subsanar el fallo.
Esto resulta especialmente eficiente cuando una variable aparece varias veces en un script. En este caso solo se tiene que corregir una parte de esta, es decir, aquella en donde se haya definido el valor de la variable.
Aquí queda patente el punto fuerte de PHP: los contenidos pueden integrarse como variables, lo que se constituye como la base del desarrollo web dinámico. A diferencia de las páginas web estáticas, que se presentan como páginas HTML extraditables, las páginas web dinámicas se generan en el momento en que se abren. Para ello, el intérprete de PHP descarga cada uno de los elementos de la página web solicitada con ayuda de las variables de las diferentes bases de datos y los integra en una página HTML ajustada a la solicitud.
Las ventajas de este concepto de diseño son evidentes: si se corrigen los elementos de la página web (p. ej., en el pie de página), no es necesario realizar los ajustes de forma manual en cada una de las subpáginas del proyecto web. En lugar de eso, es suficiente con actualizar la entrada en la base de datos. De esta manera, se asume la revisión de manera automática para todas las páginas web que enlazan los datos correspondientes como variables.
Si una variable se define varias veces en un script, la nueva definición sobreescribe a la anterior. El siguiente echo siempre ofrece el valor actual de una variable.
<?php
$author = "John Doe";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>";
$author = "Max Mustermann";
echo " <p>Supported by $author.</p>";
?>
phpEn el ejemplo de código se otorga el valor John Doe a la variable $author y, posteriormente, se sustituye por el valor Max Mustermann.
En lo que respecta al uso de las comillas, a diferencia de los strings, no es necesario que las variables se introduzcan entrecomilladas:
<?php
$author = "John Doe";
echo $author;
?>
phpSin embargo, si la variable se tiene que utilizar dentro de un string, habrá que recurrir a las comillas dobles (“). Estas indican al intérprete de PHP que tiene que buscar variables en el string para sustituirlas con los valores asociados a ellas. Las secuencias de caracteres expresadas entre comillas simples (’) serán interpretadas y reproducidas como información puramente textual incluso cuando sí son variables:
<?php
$author = "John Doe";
echo '<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>';
?>
phpPuede que a este respecto surja la pregunta de lo que pasaría si se eliminaran las comillas completamente. En este caso PHP informaría de un error de sintaxis.
Mensajes de error y enmarascaramiento
En caso de que haya errores sintácticos, el código PHP no es válido y el intérprete de PHP emite un mensaje de error. También puede ocurrir lo mismo cuando, por ejemplo, se utiliza la instrucción echo con un string sin comillas:
<?php
echo Hello World!;
?>
phpLos mensajes de error contienen, en la mayoría de los casos, información acerca de la ubicación de los errores, ofreciendo, así, datos importantes para su erradicación.
En dicho ejemplo es de suponer que hay un error en la línea 2 del código de programa, pues es exactamente ahí donde hemos eliminado las comillas para demostrarlo.
Los errores sintácticos también surgen cuando se quieren utilizar caracteres como texto y estos están asociados con una determinada tarea. Un ejemplo sería la comilla sencilla (’). Los símbolos como este solo aparecen en PHP en calidad de texto cuando se hace entender al intérprete que el símbolo no estaría relacionado con su verdadero objetivo. En el caso de las comillas simples, existen dos posibilidades: por un lado, se puede enmarcar un string con comillas simples entre comillas dobles o, por otro, se pueden enmascarar las comillas por medio de una barra invertida (\) :
<?php
echo '\'Hello World!\' ';
?>
phpTambién es posible la combinación de comillas sencillas y dobles:
<?php
echo " 'Hello World!' ";
?>
phpSin embargo, esta grafía resultaría incorrecta:
<?php
echo ' 'Hello World!' ';
?>
phpEn los ejemplos aparecen espacios entre las comillas para mejorar la legibilidad de estos.
Operadores de concatenación
Si se quiere incluir más de una variable en un script de PHP de manera simultánea, se puede hacer uso de lo aprendido hasta ahora:
<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author1 and $author2.</p>";
?>
phpAmbas variables se escriben con el resto del texto que se va a visualizar en el string señalado con las comillas dobles. PHP reconoce automáticamente las variables mediante el símbolo del dólar ($) y coloca tras ellos los valores correspondientes.
Entre los programadores, seguir este procedimiento es considerado un trabajo sucio. En este sentido existe el dogma de que las variables no deberían formar parte del string y una de las razones para ello es que gran parte de los lenguajes de programación exigen dicha separación. Lo más importante es, sin embargo, que PHP también reclama la separación de string y variable cuando se trabaja con llamadas a funciones o variables complejas. En este caso es recomendable realizar esta separación incluso en el caso del texto sin formato aun cuando no fuera estrictamente necesario.
Al trabajar con variables siempre entran en juego varios elementos que deben estar interconectados entre sí. Para ello entra en juego el operador de concatenación (.).
Si se programa un código “limpio”, este debería tener el siguiente aspecto para el ejemplo mencionado anteriormente:
<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo '<h1>Hello World!</h1>
<p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>';
?>
phpNos encontramos aquí ante tres strings y dos variables que están encadenados formando una secuencia de caracteres.
String1 | Variable1 | String2 | Variable2 | String3 | ||||
---|---|---|---|---|---|---|---|---|
’<h1>Hello World!</h1> <p>This dynamic web page was created by ’ |
. | $author1 | . | ’ and ’ | . | $author2 | . | ’.</p>’ |
Es importante señalar que un operador de concatenación une strings o variables sin espacios. Si se quiere incluir un espacio, este tiene que escribirse, al igual que en el ejemplo, en el string y con comillas.
Los programadores no solo hacen uso de los operadores de concatenación para vincular strings y variables, sino también para prolongar las variables. Veamos cómo funciona con el siguiente ejemplo:
<?php
$example = 'Hello ';
$example .= 'World';
echo $example;
?>
phpPara prolongar el valor de una variable es necesario definirlo de nuevo, pero colocando el operador de concatenación punto (.) delante del signo de igualdad. Se trataría de la abreviación habitual para $example = $example . ‘World’($ejemplo = $ejemplo . ‘Mundo’).
PHP agrega el nuevo valor al ya previamente definido. Si se quiere incluir un espacio entre ambos valores, este debe ir al final del primer string, tal y como se muestra en el ejemplo.
Cómo enlazar PHP en HTML
El intérprete de PHP solo se interesa, en principio, por el código colocado entre una etiqueta de PHP de apertura y otra de cierre:
<?php [Esta área será analizada por el intérprete de PHP] ?>
phpEste ignora el resto de fragmentos del documento y los transmite al servidor web tal y como aparecen. De esta forma, el código PHP puede integrarse en cualquier documento HTML para, por ejemplo, crear una plantilla para un sistema de gestión de contenidos. En este caso hay que tener en cuenta que los documentos HTML que contienen código PHP se han de guardar como archivos PHP. De lo contrario, el intérprete de PHP no podría procesar el documento, sino que este le sería entregado directamente al navegador, lo que tendría como consecuencia que el código del programa aparecería como texto plano en la página web.
Se puede imaginar al intérprete de PHP como el colega perezoso del servidor web que solo trabaja cuando se le exige explícitamente por medio de, por ejemplo, una etiqueta de apertura de PHP.
Si quieres combinar HTML y PHP, escribe la página HTML en su forma habitual conforme a la estructura clásica del documento y guárdala con la terminación .php.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>My first PHP page</title>
</head>
<body>
<h1>Hello World</h1>
<p>What is the current time and date?</p>
</body>
</html>
phpComplementa tu documento HTML para el script PHP, pero recuerda que la totalidad del código del programa ha de aparecer entre las etiquetas de PHP.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>My first PHP page</title>
</head>
<body>
<h1>Hello World</h1>
<p>What is the current time and date?</p>
<p>Your current time and date is:
<?php
echo date("d.m.Y H:i:s");
?>.</p>
</body>
</html>
phpEn el ejemplo se ha combinado la construcción del lenguaje echo con la función PHP date() para visualizar del lado del servidor la fecha y el horario actuales como texto. El parámetro de la función muestra el formato deseado en forma de string:
d.m.Y H:i:s = dia.mes.año hora:minuto:segundo
phpSi el navegador web solicita un archivo de tales características, el intérprete de PHP ejecuta el script y escribe el horario actual en forma de texto en el documento HTML, el cual será entregado por el servidor web y será representado como página web.
La función de PHP para los comentarios
Al igual que el código HTML, PHP también da la posibilidad de incluir comentarios. El intérprete de PHP ignora los comentarios en el código fuente siempre y cuando estos tengan unas características adecuadas para la sintaxis. Para ello, PHP pone a disposición tres alternativas diferentes.
Si se quiere destacar toda una línea como comentario y excluirla de la interpretación, se utilizará la o las dos barras (//). En el siguiente ejemplo de código se emplean ambas posibilidades:
<?php
#This is a single-line comment!
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
//This is also a single-line comment!
?>
phpEl editor de textos Notepad++ resalta los comentarios en color verde. Los pasajes de texto señalados como comentarios en el entorno del script no llegan siquiera al navegador web, a diferencia de los comentarios en HTML, puesto que el intérprete de PHP los ignora ya a la hora de ejecutar el script.
Asimismo, también se pueden insertar comentarios que comprenden varias líneas. Para ello, se puede marcar el inicio de una sección con comentarios con una barra seguida de un asterisco (/*) y el final con un asterisco seguido de una barra (*/).
<?php
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
phpEste tipo de comentarios destacados no son analizados sintácticamente y, por lo tanto, no aparecen en la página web.
Los programadores utilizan los comentarios para estructurar el código fuente de los scripts, para hacer indicaciones para su posterior edición o para añadir datos internos como por ejemplo el autor o la fecha.
Aunque la inclusión de comentarios es opcional, no es recomendable abusar de su usopara garantizar la buena legibilidad del código fuente.
Realización de cálculos con variables
En nuestro tutorial para aprender a utilizar PHP ya has podido familiarizarte con las variables, a las que se han asignado en primera instancia valores string (cadenas de caracteres). Ahora pasaremos a ocuparnos de variables que representan números enteros (integers) o números de punto flotante (floats).
Si las variables almacenan valores numéricos, PHP ofrece la posibilidad de realizar cálculos con ellas. Veamos a continuación la traducción de una suma sencilla de dos números enteros:
<?php
$numero1 = 237;
$numero2 = 148;
$resultado = $numero1 + $numero2;
echo "Resultado: " . $resultado;
?>
phpEn primer lugar, a las variables $numero1 y $numero2 se les asigna los números enteros 237 y 148 y, a continuación, se define una variable del tipo $resultado, la cual alberga la suma de las variables $numero1 y $numero2. Para ello se emplea el operador aritmético +(más). Por último, se emite el resultado de la suma con ayuda del constructorecho como texto. Hay que tener en cuenta en este sentido que en la asignación de valores numéricos a las variables no son necesarias las comillas.
El siguiente ejemplo de código, del que mostramos la versión en español de la subsiguiente captura de pantalla, muestra una selección de cálculos matemáticos que se pueden llevar a cabo con operadores PHP del lado del servidor. Los operadores empleados se corresponden con gran parte de los operadores aritméticos estandarizados de las matemáticas.
Operador aritmético | Operación | Resultado |
---|---|---|
$numero1 + $numero2 | Adición | Suma de $numero1 y $numero2 |
$numero1 - $numero2 | Sustracción | Diferencia de $numero1 y $numero2 |
$numero1 * $numero2 | Multiplicación | Producto de $numero1 y $numero2 |
$numero1 / $numero2 | División | Cociente de $numero1 y $numero2 |
$numero1 $numero2** | Exponenciación | Resultado de elevar $numero2 a la potencia $numero1 |
<?php
$numero1 = 10;
$numero2 = 5;
$adicion = $numero1 + $numero2;
$sustraccion = $numero1 - $numero2;
$multiplicacion = $numero1 * $numero2;
$division = $numero1 / $numero2;
$exponenciacion = $numero1 ** $numero2;
?>
<?php
echo "Resultado de la adición: " . $adicion ."<br />";
echo "Resultado de la sustracción: " . $sustraccion . "<br />";
echo "Resultado de la multiplicación: " . $multiplicacion . "<br />";
echo "Resultado de la división: " . $division . "<br />";
echo "10 elevado a la quinta potencia (10^5): " . $exponenciacion . "<br />";
echo "Raíz de 81: " . sqrt(81) . "<br />";
?>
phpPara los cálculos más complejos se pueden combinar las diferentes operaciones aritméticas en un mismo script. Veamos cómo se plasmaría esto en español:
<?php
$numero1 = 10;
$numero2 = 5;
$resultado = 2 *$numero1 + 5* $numero2 - 3 * sqrt(81);
echo "Resultado: " . $resultado;
?>
phpEl intérprete PHP determina los valores de las variables y calcula:
2 *10 + 5* 5 - 3 * √81 = 20 + 25 – 27 = 18
phpLa función sqrt() calcula la raíz cuadrada del parámetro entre paréntesis. En este caso se aplica la clásica jerarquía de operadores de las matemáticas: los operadores de multiplicación y división tienen precedencia sobre los de adición y sustracción. La instrucción echo ofrece el resultado como string para el navegador web.
Los términos entre paréntesis son los que primero se evalúan en PHP. Ahora nos centraremos en los números de punto flotante:
<?php
$numero1 = 2.5;
$numero2 = 3.7;
$resultado = 2 *($numero1 + 5)* ($numero2 - 3) * sqrt(81);
echo "Resultado: " . $resultado;
?>
phpComo los lenguajes de programación más habituales, PHP también soporta operadores para aumentar o disminuir en el valor 1 los valores numéricos. En este sentido, se puede diferenciar entre el operador de preincremento, el de predecremento, el de postincremento y el de postdecremento.
Operación | Operador | Resultado |
---|---|---|
Preincremento | ++$numero | El operador ++ incrementa el valor de la variable $numero, de forma que el valor aumenta en 1. El resultado será devuelto como el nuevo valor para $numero. |
Predecremento | –$numero | El operador – disminuye el valor de la variable $numero, de forma que el valor disminuye en 1. El resultado se convertirá en el nuevo valor para $numero. |
Postincremento | $numero++ | Se devuelve el valor actual de $numero y se incrementa el valor en 1. |
Postdecremento | $numero– | Se devuelve el valor actual de $numero y se disminuye el valor en 1. |
En el ejemplo del preincremento se demuestran las operaciones aritméticas con operadores de incremento y decremento. El siguiente script en español incrementa el valor de la variable $numero en 1, guarda el valor nuevo en la variable $resultado y emite su valor como string:
<?php
$numero = 0;
$resultado = ++$numero;
echo "Resultado: " . $resultado;
?>
phpSi el valor 0 se incrementa en 1, se obtiene el resultado 1.
Para calcular el predecremento de la variable $number ($numero) se recurre a los mismos scripts, pero cambiando el operador de preincremento I (++) por el operador de decremento (–):
<?php
$numero = 0;
$resultado = --$numero;
echo "Resultado: " . $resultado;
?>
phpAl reducir el valor 0 de la variable $number ($numero), se obtiene el resultado -1.
El incremento anterior o posterior (pre o post) de un valor puede ponerse de relieve en el siguiente script. Veámoslo con más claridad en la traducción del screenshot en cuestión:
<?php
$x = 0;
echo '<p>Resultado: ' . ++$x;
echo '<br>x tiene el valor ' . $x;
echo '<p>Resultado: ' . $x++;
echo '<br>x tiene el valor ' . $x, '</p>';
?>
phpEn ambos casos se obtiene el mismo resultado. En el preincremento se incrementa el valor x antes de la edición en la línea 3 y en el postincremento esto ocurre en la línea 5.
Las superglobals $_GET y $_POST
Una vez has conocido los fundamentos de PHP y ya te sabes manejar con las variables, puedes concatenarlas y realizar cálculos. En este apartado te contamos por qué las variables son un factor esencial a la hora de programar scripts.
Una función importante de los lenguajes de programación es que estos ofrecen la posibilidad de analizar las entradas de los usuarios y de transferir los valores a otros scripts. Para ello, PHP se basa en las superglobals $_GET y $_POST, variables de sistema predefinidas que están disponibles en todos los ámbitos de validez. Como arrays asociativos (campos de datos), $_GET y $_POST almacenan un conjunto de variables en forma de strings en una variable.
Los arrays de PHP pueden imaginarse como si fueran un armario con varios cajones, cada uno de los cuales ofrece la posibilidad de archivar datos. Para poder saber posteriormente lo que alberga cada uno de dichos cajones, estos reciben un nombre de variable, que, en función del tipo de array, se puede tratar de un index o de una key (llave). Mientras que en el caso de los arrays indexados se le otorga a cada cajón un índice en forma de número, a los cajones de un array asociativo se les asigna una key en forma de string (secuencia de caracteres).
Las superglobals $_GET y $_POST contienen una serie de variables en forma de llaves que permiten llegar a los valores vinculados a dichas llaves. Hablaremos en detalle de este tema cuando nos centremos en las superglobals $_GET y $_POST.
Transferencia de datos vía $_GET
La superglobal $_GET representa un array de variables que se transfiere a un script PHP con ayuda de un URL.
Si visitas weblogs, tiendas online o foros de Internet, es posible que te hayan llamado la atención los peculiares URL que aparecen en ellos. Suelen generarse siguiendo el esquema siguiente:
http://nombredeequipo/carpeta/nombredearchivo.php?nombredevariable=valordevariable
En un weblog, el esquema puede tener la siguiente apariencia:
http://www.ejemplo-blog.es/index.php?id=1
Un URL de este tipo puede desglosarse de manera muy sencilla: en un servidor web con el dominio ejemplo-blog.es existe un archivo con el nombre index.php, que sirve para crear una página web dinámica. Por lo general, este contiene código HTML y PHP, así como enlaces a archivos de plantillas y a hojas de estilo externas, es decir, todo lo necesario para representar una página web.
El indicador que delata que se trata de una página web dinámica es el código que sigue al signo de interrogación (?): id=1. Este recibe la denominación de HTTP query string o cadena de consulta de HTTP y está formando por una variable (id) y un valor (1), ambos unidos por el signo igual. Los parámetros URL de este tipo se utilizan, por ejemplo, para generar páginas web dinámicas, para cargar contenidos de las bases de datos o para solicitar la plantilla adecuada.
Las páginas web dinámicas permiten la separación entre contenido y presentación. El elemento index.php contiene prácticamente toda la información sobre la estructura de la página web, pero no alberga los contenidos. Estos se depositan normalmente en una base de datos y se puede acceder a ellos a través de los parámetros en el HTTP query string. En nuestro ejemplo, el URL entrega al index.php el parámetro id=1, el cual determina qué contenidos de la base de datos se tienen que leer y cargarse en el index.php. En el caso de los weblogs se trata, generalmente, del identificador de un artículo determinado. En los foros esto permite visitar una entrada o, en las tiendas online, ver un producto determinado.
Si un URL contiene más de un parámetro, estos se unen entre sí con el símbolo et (&).
www.ejemplo-blog.es/index.php?page=article&id=1
No es necesario recurrir a una base de datos para entender cómo se emplea $_GET en un ejemplo de código. En el siguiente script se utiliza la superglobal $_GET para interpretar los valores de las variables nombreyapellido (forename y surname) de una cadena de consulta HTTP y para escribirlos en las variables PHP $variable1 y $variable2:
<?php
$variable1 = $_GET['forename'];
$variable2 = $_GET['surname'];
echo "Hello " . $variable1 . " " . $variable2 . "!";
?>
phpPara abrir el script usamos el siguiente URL:
localhost/hello.php?forename=John&surname=Doe
Con ello se entregan los parámetros forename=Johnysurname=Doe. La emisión de los valores tiene lugar, como hasta ahora, con ayuda de la construcción del lenguaje echo.
La transmisión de datos vía $_GET da lugar inevitablemente a que los datos transferidos se puedan visualizar en la línea de direcciones. En todo momento puede comprobarse cuáles son los parámetros que se van a entregar, lo que tiene la ventaja de que las variables pueden guardarse en hiperenlaces. Además, los usuarios de Internet también tienen la posibilidad de depositar los URL e incluso el query string de HTTP como marcador en el navegador.
El hecho de que el parámetro GET se ejecute en el URL como texto sin codificar, descalifica, sin embargo, a este método para la entrega de datos sensibles como los que albergan los formularios online. Asimismo, el volumen de datos que se puede entregar por medio de la superglobal $_GET está limitado a la longitud máxima de los URL, limitaciones que pueden evitarse con el método POST de HTTP. Los datos transferidos con él se encuentran en la superglobal $_POST.
Transferencia de datos vía $_POST
Mientras que los datos que se transfieren mediante el método GET se entregan como parámetros URL, la transferencia de datos vía $_POST se realiza en el cuerpo de una petición HTTP. Esto permite transferir grandes cantidades de datos de un script a otro.
Un campo de aplicación esencial del método HTTP-POST es la transmisión de datos de formularios HTML. Veámoslo con el ejemplo de una suscripción a una newsletter.
Para ello, crea un nuevo archivo PHP con el nombre page1.php e incluye el siguiente bloque de código en español (para ver el código en inglés, consulta el screenshot que aparece a continuación):
<form method="post" action="page2.php" >
Por favor, envía la newsletter a: <br />
Tu nombre: <input type="text" name="nombre" /><br />
Tu apellido: <input type="text" name="apellido" /><br />
Tu correo electrónico: <input type="text" name="email" /><br />
<input type="submit" value="Enviar formulario" />
</form>
phpEn la creación de formularios entra en juego el elemento HTML <form>
. Este incluye en la etiqueta de inicio dos atributos: methodyaction. Con el primero se pueden definir los métodos de transmisión, en este caso el método POST de HTTP. En el atributo action se deposita el URL de un script que recibe todos los datos registrados a través de los siguientes campos de entrada. El ejemplo muestra un formulario HTML con tres elementos de entrada(input type=“text”) y un botón de envío(input type=“submit”). Como receptor de los datos, se define el archivo page2.php.
Para entender la transferencia de datos por medio de $_POST, recurrimos a un script sencillo para el análisis de los datos del formulario que almacena los valores introducidos como variables PHP en formato de texto. Crea para ello un archivo page2.php e inserta el siguiente código de programación:
<?php
$nombre = $_POST["nombre"];
$apellido = $_POST["apellido"];
$email = $_POST["email"];
echo "Hola " . $nombre . " " . $apellido . ", <br />
Te has registrado con el siguiente correo electrónico: " . $email . ".";
?>
phpGuarda los dos archivos PHP en la carpeta htdocs de tu servidor de prueba y abre page1.php con el siguiente URL en el navegador web: http://localhost/page1.php
. El navegador muestra entonces la interfaz web interactiva de tu formulario HTML.
Introduce cualquier dato de registro y haz clic en el botón de enviar para transferir variables de un script a otro. Tan pronto como confirmes los datos en page1.php, se te redirige directamente a page2.php. La ventana del navegador muestra el resultado de la ejecución del script en base a los datos transmitidos.
La page2.php solicita los datos de usuario registrados a través de los campos de entrada de la page1.php por medio del siguiente esquema:
$_POST[“Nombre del campo de entrada”]
Así es como la línea $forename = $_POST[“forename”] solicita el nombre de pila en el campo de entrada y lo guarda en la variable $forename, que, a su vez, se emite como string gracias a echo.
El constructor if y los operadores de comparación de PHP
Hasta ahora hemos definido las variables, pero también hemos mostrado cómo se transmiten estas de un script a otro y se emiten en forma de strings. A continuación, te mostramos cómo se puede vincular la ejecución de los fragmentos de código con unas condiciones determinadas.
El constructor if brinda la posibilidad de escribir scripts de tal manera que las instrucciones surten efecto cuando el usuario cumple una de las condiciones previstas, como puede ser, por ejemplo, la introducción de una contraseña correcta.
Las condiciones se pueden definir en PHP según la siguiente estructura básica:
<?php
if(expression)
{
statement;
}
?>
phpEsta se lee de la siguiente manera: solo en aquellos casos en los que se cumpla la condición en expression se podrá ejecutar el statement. Una condición se ha cumplido cuando el constructor if da como resultado TRUE (verdadero). De no ser así, este se interpreta como FALSE (falso), en cuyo caso se omitirá la instrucción.
Por regla general, el constructor if comprueba si el valor de una variable se corresponde con lo definido en la condición. Esta estructura de control tiene lugar normalmente en base a los operadores de comparación.
Operadores de comparación
Los operadores de comparación se utilizan a la hora de formular condiciones, con el objetivo de poner dos argumentos en una relación lógica que se puede evaluar como verdadera (TRUE) o falsa (FALSE). Si se emplean los operadores de comparación en las estructuras de control de PHP, estos pueden implementarse con dos variables en la expression de un constructor if:
if ($a == $b)
{
statement;
}
phpExpresemos la estructura de control con palabras: las condiciones definidas se llevan a cabo en caso de que la variable $a sea equivalente a la variable $b.
Los operadores de comparación de PHP se basan en el lenguaje de programación C y se diferencian considerablemente de los símbolos matemáticos clásicos en su escritura. En la tabla siguiente te ofrecemos una lista detallada de los mismos:
Operador de comparación | Descripción | Condiciones |
---|---|---|
== | Igual | La condición se cumple si $a y $b muestran el mismo valor. |
=== | Idéntico | La condición se cumple si $a y $b muestran el mismo valor y pertenecen al mismo tipo de datos. Esto se puede visualizar en un ejemplo en el que se compara un íntegro (1) con un string (“1”): 1 == “1” //TRUE 1 === “1” //FALSE Lo más recomendable es utilizar siempre el operador de comparación === (idéntico) para aquellas condiciones que requieren dos variables. |
!= | Diferente | La condición se cumple si $a y $b tienen valores diferentes. |
!== | No idéntico | La condición se cumple si $a y $b tienen valores que no son iguales o que pertenecen a tipos de datos diferentes. |
< | Menor que | La condición se cumple si el valor de $a es menor que el de $b. |
> | Mayor que | La condición se cumple si el valor de $a es mayor que el de $b. |
<= | Menor o igual que | La condición se cumple si el valor de $a es menor que el valor de $b o si $a y $b tienen el mismo valor. |
>= | Mayor o igual que | La condición se cumple si el valor de $a es mayor que el valor de $b o si $a y $b tienen el mismo valor. |
El siguiente script debe arrojar luz a esta estructura de control, en la que se comparan dos números enteros. El operador de comparación que se utiliza es <(menor que):
<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 < $numero2) {
echo "Se cumple la condición";
}
phpEn este caso, se definen las variables $numero1 y $numero2 y se les asignan los valores 10y20. A continuación, se establece una condición: si $numero1 es menor que $numero2, se emitirá el string mencionado en la condición de echo.
El resultado de la ejecución del script contiene la respuesta: 10 es menor que 20. El constructor if devuelve el resultado TRUE. Tras ello, se puede decir que la condición se ha cumplido (The condition is fulfilled).
<?php
if(condición a)
{
instrucción b;
}
else
{
instrucción c
}
?>
phpEste script también comprueba si la condición a devuelve el resultado TRUE o FALSE. Si se cumple la condición a (TRUE) se ejecutará la instrucción b. Si no se cumple la condición a (FALSE), se saltará la instrucción b y, en su lugar, se ejecutará la instrucción c.
A continuación, ampliamos nuestro script con el constructor else y cambiamos el operador de comparación < (menor que) por == (igual):
<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 == $numero2)
{
echo "La condición se cumple";
}
else
{
echo "La condición no se cumple";
}
?>
phpEn este caso, el constructor if ofrece como resultado FALSE. El valor de la variable $numero1 no es igual que el valor de la variable $numero2. La condición no se cumple (The condition is not fulfilled). Por lo tanto, no se ejecuta bajo la instrucción if, sino bajo la definida por else.
Si la ejecución de un fragmento de código está sujeta a la igualdad de dos valores, se utiliza el signo igual dos veces (==). Se utiliza un único signo de igualdad (=) en el proceso de adjudicación de valores a variables.
La negación de las condiciones tiene lugar mediante un signo de exclamación (!) dentro de la expression.
<?php
$numero1 = 10;
$numero2 = 20;
if ($numero1 == $numero2)
{
echo "Los números son iguales.";
}
if (!($numero1 == $numero2))
{
echo "Los números no son iguales.";
}
?>
phpEl ejemplo muestra la condición $numero1 == $numero2 y su negación. !($numero1 == $numero2) equivale a ($numero1 != $numero2).
Una aplicación práctica de ifyelse es, por ejemplo, la solicitud de contraseña en un formulario HTML. A continuación, veamos una simulación con ayuda de los ficheros PHP page1.phpypage2.php.
Abre el fichero page1.php e introduce el siguiente código de formulario:
<form action="page2.php" method="post">
Por favor, introduce tu contraseña: <input type="password" name="contraseña" />
<input type="submit" value="Enviar" />
</form>
phpLa estructura se corresponde con el formulario ya creado. En este caso solo es necesario un campo de entrada: la solicitud de la contraseña. Como se ha descrito anteriormente, las entradas del usuario se comunican al script page2.php.
Este puede adaptarse con el siguiente código de manera que la introducción de la contraseña se compare con una contraseña ya facilitada:
<?php
$contrasena = $_POST["contrasena"];
if($contrasena=="qwertz123")
{
echo "La contraseña es correcta";
}
else
{
echo "La contraseña es incorrecta";
}
?>
phpEl código puede leerse de la siguiente manera: en primer lugar, le asignamos un valor a la variable $contrasena en la línea 2, al que se accede a través del método POST de HTTP. A continuación, se define la siguiente estructura de control: el constructor if de la línea 3 debe verificar si el valor de la variable $contrasena coincide con el string qwertz123. En caso de ser así, se obtiene el string The password was correct (La contraseña es correcta). Si el constructor if da como resultado FALSE, entra en juego en la línea 7 el constructor else y se emite el string The password was incorrect(La contraseña es incorrecta).
Se puede acceder al script page1.php a través del URL http://localhost/page1.php
.
El navegador presenta la vista web del formulario HTML para la solicitud de la contraseña. Aquí se responde a la solicitud, se introduce la contraseña quertz123 definida en el script page2.php y, a continuación, se hace clic en el botón de enviar.
El navegador redirige automáticamente a la page2.php. En un segundo plano, el constructor if compara la contraseña introducida con la guardada y concluye que “qwertz123 == qwertz123 is TRUE”. Seguidamente emite el string The password was correct(La contraseña es correcta).
Comprueba tú mismo lo que ocurre al introducir una contraseña diferente en el campo de entrada.
Operadores lógicos
Las condiciones que se definen con ayuda de los operadores de comparación en la expression del constructor if pueden enlazarse, en caso necesario, con otras condiciones en la misma expression. PHP se basa, para ello, en los operadores lógicos ANDyOR.
Vínculo estrecho | Vínculo débil | Descripción |
---|---|---|
&& | AND | Las dos condiciones vinculadas con el operador deben estar definidas por el valor TRUE. |
|| | OR | Una de las condiciones vinculadas por el operador tiene que ser TRUE. |
Para enlazar condiciones, PHP cuenta con operadores lógicos que establecen vínculos estrechos o débiles. El hecho de decidirse por una u otra opción no plantea diferencias en la práctica. Si estas se combinan, sin embargo, es fácil darse cuenta que OR y || establecen un vínculo más estrecho que AND y OR. Además, el vínculo creado por AND y && es más estrecho que OR y ||. Esto es comparable con la jerarquía de operadores, tal como se conoce por los operadores matemáticos (por ejemplo, los operadores de multiplicación y división tienen precedencia sobre los de adición y sustracción: establece un vínculo más estrecho que +).
Un ejemplo práctico de esto es el que ofrece la solicitud de contraseña. Por lo general, los datos de registro se componen de una contraseña secreta y de un nombre de usuario. Solo se podrá llevar a cabo el registro en aquellos casos en los que tanto un dato como el otro coincidan con los facilitados en el sistema.
En este caso, volvemos a abrir el formulario para la solicitud de la contraseña en la page1.php y añadimos un campo de entrada para el nombre de usuario:
<form action="page2.php" method="post">
Nombre de usuario: <input type="text" name="username" /><br />
Contraseña: <input type="password" name="password" /><br />
<input type="submit" value="Enviar" />
</form>
phpEn el paso siguiente hay que adaptar la estructura de control del constructor if. Para ello es necesario recurrir al operador lógico AND y enlazar, así, la condición para la solicitud de la contraseña con una condición para la solicitud del nombre de usuario.
<?php
$username = $_POST["username"];
$password = $_POST["password"];
if($username=="John Doe" AND $password=="qwertz123")
{
echo "Bienvenido al área interna " . $username . "!";
}
else
{
echo "Acceso denegado";
}
?>
phpEl script page2.php recibe los valores para nombre de usuarioycontraseña y los almacena en las variables $username y $password. La expression del constructor if contiene dos condiciones que están vinculadas con el operador lógico AND. Solo cuando se hayan cumplido ambas condiciones (username==“John Doe”y$password==“qwertz123”), el constructorifofrecerá como resultadoTRUE.
Debido a que el nombre de usuario se obtiene a través del campo de entrada username, este puede utilizarse directamente para publicar el texto vía echo: a Welcome to the internal área (Bienvenido al área interna) le sigue el valor de la variable $username. Si no se cumple una de las dos condiciones, se recibirá el texto Access denied (Acceso denegado).
Los operadores lógicos pueden combinarse libremente. En este sentido se puede considerar que AND tiene una jerarquía de operadores superior a OR. Del mismo modo que ocurre con las ecuaciones matemáticas, en PHP también se pueden utilizar paréntesis para influir en la jerarquía.
Bucles (while, for)
A veces es necesario que un script recorra un determinado segmento de código varias veces antes de que se ejecute el resto del código del programa. Para ello, los lenguajes de programación utilizan el concepto de bucle, a los que también se les denomina también loops PHP. Aquí se pueden diferenciar tres tipos:
- bucles while
- bucles do-while
- bucles for
Bucles while
Los bucles while son los bucles más sencillos de PHP. Su estructura base obedece al siguiente esquema:
while (condición)
{
Paso del bucle y otras instrucciones
}
phpLos bucles while instan a PHP a ejecutar instrucciones subordinadas en tanto que la condición while se cumpla. Para ello, el intérprete de PHP comprueba la condición al principio de cada vuelta del bucle. La ejecución del código subordinado se para cuando la condición while ya no se cumple. Se puede visualizar este principio con un sencillo script con números. A continuación, la versión en español:
<?php
$numero = 1;
while ($numero <= 10) {
echo $numero++ . "<br />";
}
?>
phpEn el apartado “Realización de cálculos con variables” anterior ya se introdujo el principio del incremento. En el siguiente script recurrimos a dicho principio, pero utilizamos un operador de postincremento para aumentar en 1 el valor del integer de la variable $number ($numero) cada vez que el bucle dé una vuelta tras la publicación del texto vía echo. Como condición para el bucle while definimos que $number sea menor/igual a 10. La instrucción echo se repetirá tantas veces como sea necesario para que $number reciba un valor superior a 10.
El resultado de la ejecución del script es un string que, cada vez que el bucle da una vuelta, emite el valor de la variable $number antes de que este se incremente. El script cuenta de 1 a 10 y finaliza la ejecución del código en cuanto no se cumple la condición while.
Bucles do-while
La construcción de los bucles do-while se asemeja a la de los bucles while. La diferencia solo radica en que la condición no se comprueba al principio de cada vuelta del bucle, sino al final. El esquema básico de un bucle do-while se corresponde con el siguiente ejemplo:
do {
Paso del bucle y otras instrucciones
}
while (Condición)
phpCuando se programa un bucle do-while, el script resultante tiene el siguiente aspecto:
<?php
$numero = 1;
do {
echo $numero++ . "<br />";
}
while ($numero <= 10);
?>
phpEn este caso, el resultado es el mismo. Lo peculiar en el bucle do-while es que este se ejecuta al menos una vez, aun cuando la condición no se cumpla en ninguna ejecución del bucle.
Bucles for
Básicamente, los bucles for tienen la misma funcionalidad en un script de PHP que los bucles while. A diferencia de estos, sin embargo, el valor inicial, la condición y la instrucción se anotarán dentro de una línea y no se distribuirán a lo largo de tres o más líneas.
La estructura base del bucle for tiene el siguiente esquema:
for (valor inicial; condición; paso del bucle)
instrucciones
phpEste ejemplo en español puede entenderse como bucle for en forma compacta:
<?php
for($numero = 1; $numero <= 10; $numero++) {
echo $numero . "<br /> ";
}
?>
phpEn primer lugar, se define el valor 1 para la variable $numero. Posteriormente, PHP comprueba si se cumple la condición $numero <= 10. Si es correcto, el bucle continúa y se ejecutan las instrucciones por debajo del bucle (en este caso, la instrucción echo). Solo entonces se ejecuta el bucle, en cuyo caso no tiene importancia si se ha optado por el preincremento o por el postincremento, puesto que esta instrucción se realiza con anterioridad a la emisión. Si el paso del bucle ha concluido, dará comienzo la siguiente vuelta.
El valor inicial, la condición o el paso del bucle son elementos opcionales de un bucle for. En teoría, son posibles incluso los bucles vacíos, aunque serían redundantes.
Básicamente, tomar una decisión acerca de si los scripts PHP deben incluir bucles for o while depende de cada uno. Existe, sin embargo, un argumento que demuestra que los bucles for ganan la partida: si se aplican bucles for, se pueden controlar mejor los datos fundamentales del bucle. Esto contribuye a prevenir el peligro de escribir un bucle que funcione hasta que la memoria del intérprete esté llena. Esto ocurre en referencia al ejemplo mencionado si se olvida incrementar el valor de la variable $numero.
En caso de que el bucle tenga que funcionar al menos una vez independientemente de la condición, el bucle do-while es el bucle que habría que elegir.
breakycontinue
Se puede influir en el transcurso de un bucle while, do-while o for por medio de las instrucciones breakycontinue. Se usabreakpara interrumpir el transcurso de un bucle en cualquier lugar ycontinuepara omitir una vuelta del bucle. Tanto una instrucción como la otra están conectadas a una condición por medio del constructorif. En el ejemplo siguiente, tanto el original como la traducción muestran un script numérico con unbreak:
<?php
for ($numero = 1; $numero <= 10; $numero++) {
if ($numero== 5) {
echo "El script se para al llegar a 5";
break;
}
echo $numero . "<br /> ";
}
?>
phpEn el bucle for hemos definido que el valor de la variable $numero ($number) se incremente en 1 en cada vuelta hasta que la variable haya alcanzado el valor 10. Ahora, con la instrucción break, el bucle se puede interrumpir con anticipación en cuanto $numero ($number) haya alcanzado el valor 5. El constructor echo solo ofrece los números comprendidos entre el 1 y el 4.
Para omitir la edición de la quinta vuelta, pero no interrumpir para ello todo el transcurso del bucle, se reemplaza la instrucción break por continue:
<?php
for ($numero=1; $numero <= 10; $numero++) {
if ($numero == 5) {
echo "¡Se omite la 5!<br />";
continue;
}
echo $numero . "<br /> ";
}
?>
phpEn lugar del número 5, PHP ofrece el string textual definido bajo if ¡Se omite la 5!(We skip number 5!).
Operaciones con archivos
Las páginas web dinámicas se basan en la separación entre contenido y presentación, de ahí que los lenguajes de programación como PHP ofrezcan diferentes funcionalidades que permiten cargar contenidos de fuentes de datos externas en archivos de plantillas centrales. En la práctica, estas fuentes de datos son bases de datos que se administran con ayuda de sistemas de gestión de contenidos como MySQL. Para saber cómo funciona, visita nuestro tutorial de MySQL.
Además, existe la posibilidad de integrar datos procedentes de archivos. A continuación, te mostramos cómo se pueden leer archivos como string en un script PHP y cómo se pueden guardar los textos de tus scripts en archivos.
Lectura de archivos
Para leer el contenido de un archivo, PHP ofrece diferentes funciones, de las cuales file() y file_get_contents() son las más apropiadas para nuestros objetivos. Mientras que la funciónfile_get_contents()sirve para leer la totalidad del contenido de un archivo en un string, la funciónfile()guarda el contenido en forma de array. Cada elemento del array se corresponde con una línea del archivo. Mediantefile() es más sencillo emitir cada línea por separado.
A continuación, demostramos las operaciones con archivos PHP con el archivo example.txt que alojamos en el directorio htdocs de nuestro servidor de prueba. El contenido del archivo lo componen cuatro líneas del texto Lorem ipsum:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
El primer paso consiste en leer todo el archivo como string. Para ello hay que asignarle a la función file_get_contents() el nombre del archivo correspondiente como parámetro. Esto tiene lugar en función del esquema siguiente:
`file_get_contents(example.txt')`
phpAhora ya podemos trabajar con este string ya leído, al que podemos, por ejemplo, asignar una variable y emitirla como texto en el navegador web:
<?php
$example = file_get_contents('example.txt');
echo $example;
?>
phpEn la vista del navegador se puede ver el texto devuelto sin párrafos. Los saltos de línea del archivo original no se pueden visualizar, lo que guarda relación con el hecho de que el navegador web interpreta el texto del script como código HTML, por lo que se pierden los ajustes que se definen en los editores de texto.
Si quieres mantener la estructura original, puedes recurrir a diferentes posibilidades. Puedes añadir manualmente la codificación HTML para el salto de línea (br) en el archivo de origen, etiquetar con <pre>
el contenido del archivo y asignar la propiedad CSS white-space: pre-wrap a esta sección o puedes utilizar la función nl2br() para indicar a PHP que los saltos de línea (new lines) deben transformarse automáticamente en saltos de línea en HTML (breaks). Se ha de utilizar la función siguiendo el siguiente esquema:
<?php
$example = file_get_contents('example.txt');
echo nl2br($example);
?>
phpSi se emplea el constructor del lenguaje echo en combinación con nl2br(), PHP inserta un salto de línea en HTML antes de cada línea.
Para que las líneas de un archivo se visualicen por separado, puedes recurrir a la función file(), la cual lee el archivo, numera todas las líneas que comienzan por 0 y guarda sus contenidos como elementos de un array. Trasladado a nuestro ejemplo, se obtiene la siguiente clasificación:
[0] = Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
[1] = Aenean commodo ligula eget dolor. Aenean massa.
[2] = Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
[3] = Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
Para emitir el contenido correspondiente mediante el constructor del lenguaje echo, es necesario indicar el número de línea deseado. Así, el siguiente script de ejemplo entrega al navegador la primera línea del archivo example.txt:
<?php
$example = file("example.txt");
echo $example [0];
?>
phpEscritura de archivos
Con PHP no solo se pueden leer archivos, sino que el lenguaje de programación también da la posibilidad de crearlos y de describirlos con contenidos.
Para ello, se utiliza la función de PHP file_put_contents(), que espera dos parámetros: el nombre del archivo que se tiene que crear o actualizar y los datos en forma de string o array.
El siguiente script crea el fichero test.txt y escribe el string This is a test! (¡Esto es un test!) en la primera línea. El suplemento \r\n da lugar a un salto de línea en el archivo de destino. Veámoslo:
<?php
file_put_contents("test.txt", "This is a test! \r\n");
echo "test.txt was created!";
?>
phpPuesto que la función file_put_contents no entrega emisión alguna para el navegador, añadimos una instrucción echo que nos indica cuál es la acción que se va a llevar a cabo.
Si la carpeta de destino ya contiene un archivo con el mismo nombre, este se sobrescribirá, lo que se evita determinando el parámetro FILE_APPEND.
<?php
file_put_contents("test.txt","The test was successful! \r\n", FILE_APPEND);
echo "test.txt was updated!";
?>
phpSi se utiliza file_put_contents() con el parámetro FILE_APPEND, se agregarán nuevos contenidos a los ya existentes.
Lo que PHP escribe en el archivo de destino no tiene por qué ir definido obligatoriamente en el script. Como alternativa también existe la posibilidad de transmitir los contenidos de un archivo a otro. El siguiente script lee el contenido del fichero example.txt y lo inserta en el fichero test.txt:
<?php
$example= file_get_contents("example.txt");
file_put_contents("test.txt", $example, FILE_APPEND);
echo "test.txt was updated!";
?>
php