Post on 24-Nov-2015
Objetivo del libro
Este libro se dirige a un pblico con conocimientos en la creacin de sitios Web estticos de HTML (Hypertext Markup
Language), aunque no es necesario que tenga conocimientos en desarrollo informtico o algortmica.
El objetivo de este libro es explicar cmo crear de manera dinmica e interactiva un sitio Web, con ayuda de
ejemplos. Tras la lectura de este libro, ser capaz de instalar y crear un sitio Web con PHP (Hypertext
Processor)/MySQL.
Los requisitos previos son: conocimientos de HTML y algunas nociones de JavaScript, con algunos ejercicios.
Funcionamiento de un sitio Web
Cuando ejecuta una URL (Uniform Resource Locator), por ejemplo http://www.google.es, qu ocurre en el
navegador (Internet Explorer, Firefox, Chrome...)?
La URL se enva a un servidor Web a travs de la red. Este servidor procesa la solicitud y reenva el flujo HTML al
navegador.
Existen dos tipos de sitios Web: los sitios Web estticos y los dinmicos.
Los sitios Web estticos solo contienen cdigo clientes, es decir, un cdigo que puede interpretar su navegador. Por
ejemplo: HTML y JavaScript.
En cambio, los sitios Web dinmicos contienen lenguaje servidor porque el servidor Web interpreta este lenguaje y
enva al navegador el flujo HTML. Por ejemplo, PHP, Java (no confundir con JavaScript) y Active Server Pages.NET
(ASP.NET) son lenguajes del lado servidor.
Cuando almacena informacin en su sitio Web, por ejemplo un inicio de sesin y una contrasea, un blog, artculos,
etc., est obligado a utilizar una base de datos para almacenar la informacin y utilizar un lenguaje servidor que
pueda leer o escribir la informacin en la base de datos.
Cuando ejecuta una URL desde un sitio Web dinmico (por ejemplo: http://google.es), se ejecutan dos procesos
diferentes:
1) El servidor Web (Apache es el ms frecuente) lee su URL y ejecuta el cdigo servidor (en nuestro ejemplo, PHP) que va a
crear un cdigo HTML. A continuacin el servidor enva a su navegador el flujo HTML que se ha creado.
2) Su navegador recibe el flujo HTML y lo interpreta de manera grfica, mostrando la pgina HTML.
De este modo, cuando quiera probar en su equipo un sitio Web esttico, simplemente haga doble clic en la pgina
HTML para abrirla en su navegador.
La URL ser del tipo: C:\HTML\li.html
Pero si quiere probar un sitio Web dinmico con PHP, obligatoriamente debe instalar en su equipo un servidor Web
(por ejemplo, Apache) y ejecutar su pgina PHP con una URL de tipo: http://127.0.0.1/test.php
Introduccin
Para crear un sitio Web esttico, solo necesita un navegador (Internet Explorer, Firefox, Chrome...) y un editor de
texto, por ejemplo Notepad++ o Sublime Text.
Para crear un sitio Web dinmico, necesita un navegador, un servidor Web que ejecute las pginas PHP y un
servidor de base de datos.
En este soporte utilizaremos el servidor Web Apache y el servidor de base de datos MySQL, que son las
herramientas ms utilizadas para crear sitios Web de poca envergadura. Son gratuitos y estn disponibles como un
paquete. Se instalan fcilmente en UNIX, Windows y Mac.
Los paquetes ms utilizados son WAMP (XAMP en Linux, MAMP en Mac) y EasyPHP. En este libro utilizaremos
EasyPHP 13.1 de Windows.
Para ms informacin puede consultar las pginas
Web www.php.net,http://php.net/manual/es/index.php y www.easyphp.org (desde este ltimo enlace puede
descargar la ltima versin de EasyPHP).
Instalacin de EasyPHP 13.1
De manera predeterminada, EasyPHP se instalar en: C:\ProgramFiles\EasyPHP-DevServer-13.1VC11.
Una vez instalado, haga clic en Mostrar los iconos ocultos y ver el icono en el rea de notificacin de la barra de tareas:
Haga clic con el botn derecho del ratn en y aparecer un men:
Haga clic en Web local; se abrir en su navegador la siguiente pgina:
Apache le enva esta pgina Web y la URL es http://127.0.0.1/. Esta direccin, tambin llamada localhost,
corresponde a la direccin de su servidor Web en modo local. Solo quien utilice este equipo visualizar esta pgina y
las pginas PHP que va a crear.
Las pginas PHP que va a codificar se almacenarn en el directorio C:\Program Files\EasyPHP-DevServer-
13.1VC11\data\localweb.
Atencin: en versiones anteriores, las pginas PHP se ubicaban en la carpeta www.
Observe que hay tres carpetas por defecto, que estn vacas y que se pueden eliminar si lo desea.
Google Chrome se va a utilizar como navegador por defecto.
Por ejemplo, cree un archivo vaco y gurdelo como C:\Program Files\EasyPHP-DevServer-
13.1VC11\data\localweb\test.php.
En su navegador, vuelva a la direccin http://127.0.0.1, actualice la pgina con [F5] y aparecer su pgina test.php.
Ahora solo le queda elegir un editor de archivos para escribir sus pginas PHP.
Vamos a utilizar Notepad++. Es gratuito, se instala fcilmente y contiene una funcin muy prctica, que consiste en
asignar colores dependiendo de la sintaxis, para visualizar los errores de sintaxis HTML o PHP.
A continuacin, escriba su cdigo HTML y PHP y guarde la pgina en el archivo C:\Program Files\EasyPHP-
DevServer-13.1VC11\data\localweb. Su pgina siempre debe tener la extensin .php, salvo si se trata de una
configuracin especial del servidor Web. En el siguiente ejemplo, la pgina se llama test.php y contiene el cdigo
HTML y PHP entre las etiquetas .
En el siguiente ejemplo, la funcin echo crea Hola! en HTML y el navegador recibe todo el flujo HTML de la
pgina:
Ejemplo de pgina PHP
Hola
Y dar como resultado: Hola
Haga clic con el botn derecho del ratn y elija en su navegador la opcin Ver cdigo fuente de la pgina. Solo
visualizar el cdigo HTML, nunca el cdigo servidor en PHP. No se preocupe si no lo ha entendido todo, porque
vamos a explicar ms adelante cmo se escribe una pgina PHP.
Las etiquetas
1. Sintaxis bsica
XHTML (Extensible Hypertext Markup Language) es un lenguaje de etiquetas. Es el sucesor de HTML y se basa en la
sintaxis de XML. Asegura la compatibilidad tanto en equipos clsicos como en smartphones.
Ya conoce las etiquetas , , ...
Escriba PHP entre dos etiquetas. Se definen de la siguiente manera:
: indica el final del cdigo PHP
Si usa Notepad++, estas etiquetas se mostrarn en color rojo.
Si retomamos el ejemplo del captulo Instalacin, el cdigo PHP se escribir de la siguiente manera:
?>
Tambin puede escribir este cdigo en una sola lnea:
Existen otras formas de escribir estas etiquetas. En lugar de , puede escribir:
O bien:
Y tambin:
Atencin: en el archivo de configuracin php.ini, las dos ltimas sintaxis requieren un parmetro especial.
2. Insercin de etiquetas PHP en el cdigo XHTML
Puede insertar un cdigo PHP en cualquier ubicacin del cdigo XHTML.
Ejemplo de pgina PHP
Hola, hace
En Internet Explorer este cdigo va a generar la siguiente imagen en Chrome:
Haga clic con el botn derecho del ratn y escoja Ver cdigo fuente de la pgina; obtendr el siguiente cdigo:
Ejemplo de pgina PHP
Hola, hace buen tiempo
Este es el cdigo HTML que el navegador ha recibido e interpretado. Observe que no se puede ver el cdigo servidor
entre las etiquetas php.
Tambin puede generar de forma dinmica el ttulo de la pgina HTML, es decir, el contenido de la
etiqueta .
Ejemplo PHP n2
Hola, hace
Este cdigo va a generar en Chrome lo siguiente:
3. Envo de datos al servidor Web
Existen varias instrucciones para enviar datos al servidor, es decir, para insertar cdigo HTML en una pgina Web.
La primera instruccin es echo y se escribe de la siguiente manera:
Tambin puede escribir este cdigo:
O bien:
Atencin: si utiliza la primera sintaxis, no se interpretarn las variables (vea el siguiente ejemplo).
La segunda instruccin es print y se escribe de la siguiente manera:
Por tanto, print equivale a echo.
Existen otras variantes de print:
printf(): muestra una cadena de caracteres formateada.
sprintf(): devuelve una cadena formateada.
vprintf(): muestra una cadena formateada.
sscanf(): analiza una cadena con ayuda de un formato.
fscanf(): analiza un archivo en funcin del formato.
flush(): vaca los bferes de salida.
Observe que una instruccin siempre termina con un punto y coma.
Tambin puede escribir varias instrucciones en la misma lnea, siempre y cuando vayan separadas por punto y
coma.
equivale a y a
4. Insercin del cdigo XHTML con la instruccin echo
La funcin echo permite insertar cualquier cdigo HTML, por ejemplo:
Y como resultado inserta una tabla HTML.
Tambin puede insertar una imagen de la siguiente manera:
Por tanto, puede escribir una pgina Web completa con la instruccin echo.
;
echo ;
echo PHP ENI;
echo ;
echo ;
echo ;
echo "Hello $nombre !";
echo La fecha es 7 de marzo de 2013 .; //
echo ;
echo ;
echo ;
?>
El uso de las variables permite convertir el sitio en dinmico, es decir, la informacin mostrada se genera en una
base de datos cuyo contenido cambia con regularidad. En este ejemplo la variable es$nombre y la cadena de
caracteres est entre comillas.
5. Comentarios
Los comentarios son muy tiles en PHP porque permiten ignorar el cdigo que el servidor Web tiene que ejecutar.
Solamente el usuario puede ver el texto de los comentarios, que sirve para explicar las lneas del cdigo PHP.
Existen dos tipos de comentarios:
Monolnea:
Multilnea:
En ninguno de los dos casos se ejecuta la instruccin echo.
Las variables
1. Asignacin
Una variable es una informacin que se almacena temporalmente en la memoria, es decir, es una zona de la
memoria que almacena informacin en una pgina PHP y que se destruye automticamente cuando la pgina ya no
se ejecuta.
Una variable PHP comienza siempre con $, seguida de una letra y de una secuencia de letras, cifras o del signo _.
Por ejemplo, $edad.
Atencin: PHP distingue entre maysculas y minsculas, por lo que $nombre es distinto de$Nombre.
Una variable siempre tiene un nombre y un valor.
Por ejemplo, $edad = 25, el valor 25 se asigna a la variable $edad gracias al signo =.
No es necesario definir y buscar el tipo de variable. Se hace automticamente.
De este modo, puede escribir:
Esto no origina ningn error. El tipo de variable puede cambiar. En el ejemplo anterior cambia del tipo integer al tipo
string (ver el siguiente prrafo).
2. Tipos de variables
Hay dos categoras de variables:
Escalar:
Los nmeros enteros llamados integer son 1, 2, 3... y los nmeros negativos, -1, -2, -3... Los nmeros decimales llamados float son los nmeros positivos o negativos con comas
(1.35665). Atencin: el punto se utiliza como separador.
La cadena de caracteres string: cualquiera con dobles comillas ("hola") o comillas simples (hola). Los booleanos: solo tienen dos tipos de valores: verdadero o falso, clasificados comotrue o false.
Compuesta:
Las tablas: permiten almacenar varias variables. Podr consultarlo en el captulo Funciones y estructuras de control - Las tablas.
Los objetos: son ms complejos y se describen en el captulo El objeto.
3. Particularidades del tipo de variable string
Si desea mostrar la frase Qu pasa con un apstrofo come este?, no podr escribir:
El apstrofo en la instruccin echo va a generar un error.
Para solucionar este problema, hay dos soluciones:
Usar comillas dobles en la instruccin echo:
Escapar en los apstrofos con \:
Cuando se aade la barra invertida delante del apstrofo, se va a evitar que este se interprete como el final de la
instruccin echo.
De esta manera, en el segundo caso la cadena "Qu pasa con un apstrofo como este?" estar en la variable
$variable1.
Lo mismo ocurre con las comillas:
o
La barra invertida anula el comportamiento de cierre de instruccin del apstrofo o de las comillas dobles. Tambin
puede servir pra anular el comportamiento del $.
Si quiere mostrar $variable1 = pepe, escriba:
Para terminar, puede acceder a un carcter de una cadena con la siguiente sintaxis:
$var[x] o $var es el nombre de la variable que contiene la cadena de caracteres y x es la posicin del carcter que
debe recuperar. Tenga en cuenta que para PHP el primer carcter est en la posicin 0.
El siguiente ejemplo, primero muestra h y a continuacin a.
echo $variable1[3];
?>
4. La concatenacin
Es un conjunto de cadena de caracteres. PHP permite la concatenacin usando la coma o el punto.
Equivale a:
Da como resultado:
Hola lee esta ayuda
Si quiere concatenar la cadena "hola" y "aqu hay un apstrofo ", no podr escribir:
El apstrofo cierra la cadena de caracteres que ha empezado en "aqu", por lo que PHP genera un error.
Para evitar este problema:
O bien escapa en el apstrofo:
O bien abre y cierra con comillas dobles la cadena de caracteres:
Si introduce en una variable la cadena "aqu hay un apstrofo ":
echo "hola".$variable;
?>
Para mostrar una variable en una cadena de caracteres con ayuda de echo, escriba lo siguiente:
PHP interpreta la variable y muestra: "Hola aqu hay un apstrofo ", pero no "hola $variable".
Si quiere mostrar "hola$variable", no utilice $:
Para terminar, y para una mayor claridad del cdigo, utilizaremos la sintaxis:
Esto permite mostrar en Notepad++ la $variable en color azul, y por tanto resaltar las variables del texto.
5. Transtipado
Se utiliza para transformar un tipo de variable en otro.
Por ejemplo, si tiene un nmero decimal en una variable y desea transformarlo en un entero, solo debe convertirlo
en entero. Esta conversin se denomina cast.
Da como resultado:
El valor entero es:15
En este ejemplo la variable $variable se transforma en tipo int y se concatena con la cadena de caracteres "El
valor entero es:".
Por tanto, la sintaxis es:
(tipo)$variable
Y el tipo es igual a:
(int) o (integer) -> tipo entero
(bool) o (boolean) -> booleano
(double) o (float) o (real) -> tipo double
(string) -> tipo cadena de caracteres
(array) -> tipo array
(object) -> tipo objeto
Puede aadir espacios entre los parntesis, antes y despus del tipo.
Da como resultado:
El valor entero es:15
Otro ejemplo consiste en transformar un nmero entero en cadena de caracteres:
Da como resultado:
El valor del tipo de cadena de caracteres es: 15.325
En el siguiente ejemplo, se transforma un nmero entero en booleano:
Da como resultado:
El tipo de variable $varbool es: booleano
Las constantes
Una constante permite definir un dato, dndole un valor permanente vlido para el resto del programa.
Esta constante es muy til si quiere utilizar regularmente un valor sin tener que escribirlo cada vez. Por ejemplo, si
utiliza normalmente PI y no quiere escribir cada vez el mismo valor 3,1415926535 puede crear una constante
llamada PI por valor de 3,1415926535 y as podr utilizar PI en el cdigo del programa.
Podemos definir una constante con la palabra clave define:
Para definir y mostrar PI:
Da como resultado:
3,1415926535
El nombre y la constante se escriben siempre en maysculas. El valor puede ser una cadena de caracteres, un valor
numrico o un booleano.
No se puede volver a definir la constante. Conserva su valor permanentemente durante todo el programa, es decir,
en la misma pgina PHP.
Para saber si una constante est definida, puede utilizar la funcin defined. Esta funcin devuelvetrue si la
constante est definida, y false si no lo est.
Da como resultado:
True
Las condiciones
1. If
Las instrucciones del tipo condicin permiten ejecutar el cdigo si una condicin es verdadera.
Por ejemplo, si el nombre es Roberto, muestre Bienvenido:
El valor Roberto se asigna a la variable $nombre y se comprueba con ayuda de la instruccin if.
Por tanto, la sintaxis es:
if (condition) { instruccin }
Tenga en cuenta que:
es igual a se designa ==
es diferente de se designa !=
es inferior a se designa <
es superior a se designa >
es inferior o igual a se designa =
La instruccin si no se designa con else.
Por ejemplo, si el nombre es igual a Roberto, se muestra Bienvenido, o Hasta pronto en otro caso:
Da como resultado:
Hasta pronto
El cdigo comprueba si la variable $nombre es Roberto, pero como no es el caso, el cdigo entra enelse (si no), y
ejecuta echo "Hasta pronto";.
La ltima instruccin en las condiciones es else if, llamada si no si.
Esto permite probar otras condiciones que no han sido comprobadas por if.
Por ejemplo, si el nombre es Roberto, se muestra Bienvenido ; si no, si es Pepe se muestra Hola ; si no, Hasta
pronto:
Da como resultado:
Hola
El cdigo comprueba si $nombre es igual a Roberto y si tambin es igual a Pepe.
Como efectivamente es igual a Pepe, el cdigo ejecuta echo "Hola";.
Puede aadir tantas instrucciones else if como quiera.
Si se comprueba la condicin ($nombre == "Roberto"), las otras condiciones else if ni siquiera se
comprueban, por tanto si entra en if se asegura de no pasar nunca por else if nielse.
Por el contrario, si escribe:
{
echo Bienvenido;
}
if ($nombre == Pepe) //comprueba la variable $nombre
{
echo Hola;
}
else
{
echo Hasta pronto;
}
?>
El cdigo comprueba si $nombre es igual a Roberto y si tambin es igual a Pepe, pero como$nombre se inicia con
el valor Roberto, este cdigo muestra Bienvenido y Hasta pronto.
Tambin puede anidar los if unos dentro de otros tantas veces como quiera.
Por ejemplo:
Da como resultado:
Bienvenido
El programa comprueba si la variable $edad es superior a 20, y, como es el caso, el programa comprueba
si $edad es igual a 30 y ejecuta echo "Bienvenido";.
Para terminar, puede intercalar el cdigo HTML entre las condiciones en PHP.
Por ejemplo:
Hola
Hasta pronto
Es igual a:
2. Switch
La instruccin switch es igual a if, pero el programador la utiliza para comprender mejor el cdigo. Si se utiliza
un break para salir del switch, entonces es igual a if. De lo contrario, se ejecutarn todas las instrucciones
del case en el que ha entrado.
La sintaxis es:
switch (condition) {
case expresin: instruccin
case expresin: instruccin
...
}
La instruccin break provoca la salida del switch y si $nombre es igual a "Roberto" el cdigo ejecutar echo
"Hola" y break, y saldr del switch sin comprobar "Juan".
Eso es igual a la instruccin else if en lugar de if:
En el siguiente ejemplo, si no utiliza la instruccin break:
switch ($nombre) //comprueba la variable $nombre
{
case Roberto: echo Hola;
case Juan: echo Hasta pronto;
}
?>
El valor Roberto se asigna a la variable $nombre y esta variable se comprueba con ayuda de la
instruccin switch. El ejemplo anterior muestra lo siguiente:
Hola
Hasta pronto
La instruccin case permite comparar cada valor con la variable $nombre y ejecuta las instrucciones despus de
los :.
Para terminar, puede aadir la instruccin default para ejecutar el cdigo en caso de no haber encontrado
ninguna similitud con las instrucciones case.
Por ejemplo:
Da como resultado:
Nadie tiene este nombre
Como $nombre es igual a "Pepe", el cdigo no entra en el "Roberto" ni en el case "Juan", pero s en default.
La instruccin default es igual a la instruccin else.
Vea el siguiente ejemplo con dgitos:
Da como resultado:
Tiene 25 aos.
En definitiva, si tiene que comprobar muchas condiciones, utilice switch.
Los bucles
1. For
Un bucle permite repetir x veces la ejecucin de un cdigo.
Por ejemplo, si quiere mostrar diez veces Hola, solo tiene que escribir el bucle for.
La variable $i representa el contador del bucle. No est obligado a recurrir a la variable $i, pero por norma general
es el nombre que se emplea.
Por tanto, la sintaxis es:
for ($i=nmero inicial; $i
instrucciones
}
$i++ es igual a $i=$i+1 y represtenta el aumento de $i. Puede escribir $i=$i+2 para aumentar o $i=$i-
1 para disminuir.
Por ejemplo, puede escribir los nmeros de 100 a 150 con el siguiente cdigo:
La instruccin echo $i.; se repite 50 veces y $i aumenta en 1 cada vez.
permite saltar una lnea entre cada nmero para no tener que mostrarlos todos.
La instruccin break permite detener el bucle.
Por ejemplo, si quiere mostrar cinco veces Hola, solo debe escribir un bucle for:
Da como resultado :
Hola
Hola
Hola
Hola
Hola
El bucle se detiene cuando $i es igual a 5 (y no a 10).
2. While
El bucle while significa mientras que, es decir, el bucle se ejecutar siempre y cuando una condicin sea
verdadera.
Por ejemplo, para mostrar diez veces Hola, solo debe escribir un bucle while:
La variable $i represtenta el contador del bucle. Pero mientras $i sea inferior o igual a 10, se repetir el bucle.
Por lo tanto, la sintaxis es:
$i=nmero inicial
while ($i
Nunca pasar en el bucle porque $i vale 11 en un principio, no se satisface la condicin del bucle.
El bucle while es igual al bucle for; en algunas ocasiones le resultar muy til si desconoce el nmero de veces
que va a ejecutar un bucle, sobre todo si va a leer el bucle while en la base de datos y la condicin de salida del
bucle depende del valor ledo en la base de datos.
3. Do while
El bucle Do while significa hacer mientras, es decir, el bucle se ejecutar siempre y cuando una condicin sea
verdadera. Se diferencia del bucle while en que la expresin se ejecuta al menos una vez.
Por ejemplo, para mostrar diez veces Hola, debe escribir el bucle Do while:
La variable $i representa el contador del bucle. Pero esta vez debe leer: ejecutar el bucle si $i es inferior o igual a
10.
Por tanto, la sintaxis es:
$i=nmero inicial
do
{
aumento
instrucciones
} while ($i
?>
Aqu la tabla se denomina $tabla, pero la puede llamar de cualquier otra manera.
Tambin puede acceder directamente al valor de una tabla a travs de su ndice, con la siguiente sintaxis:
Da como resultado:
Juan
En efecto, $tabla[x] es una variable que tiene como valor el segundo elemento de la tabla.
Atencin: los ndices de las tablas comienzan desde 0.
Para sustituir la cadena de caracteres Roberto por Nadia en el ndice 1 de la tabla, escriba:
Tambin puede crear una tabla vaca y rellenarla de la siguiente manera:
O bien de esta manera:
O incluso:
< ?php
$tabla = [Juan,Roberto, Pablo,Pedro,Alonso] ;
?>
PHP rellena automticamente los ndices, que es lo mismo que escribir:
2. Tabla asociativa
En un tabla asociativa puede decidir la clave que va a introducir.
Por ejemplo:
En este ejemplo la clave puede tomar cualquier valor; no tiene que ser necestariamente un nmero.
Este tipo de tabla se escribe de la siguiente manera:
La asociacin se escribe con los smbolos =>. El primero es la clave y el segundo, el valor.
Otra forma de completar esta tabla es:
Puede utilizar esta tabla cuando la clave tiene una informacin importante.
Por ejemplo, si quiere almacenar las caractersticas de una persona en una tabla $persona, escriba:
$persona[Edad] = 50;
?>
A continuacin, si quiere mostrar la edad, escriba:
3. Recorrido de una tabla
Existen varias soluciones para recorrer una tabla.
a. El bucle for
Este ejemplo muestra:
Juan
Roberto
Pablo
Pedro
Alonso
Por tanto, $i vara de 0 a 4, el bucle muestra $tabla[0], cuyo valor es Juan, $tabla[1], cuyo valor es
Roberto, etc.
Algunas veces los elementos de una base de datos se recuperan en una tabla y no se puede saber con antelacin el
nmero de elementos que contiene esta tabla. Si desconoce el tamao de la tabla, puede usar las funciones count() o sizeof(), que se detallan ms adelante.
Por ejemplo:
for ($i = 0; $i < sizeof($tabla); $i++) {
//muestra los valores concatenados de la tabla
//con un salto de lnea
echo $tabla[$i].;
}
?>
Este ejemplo muestra lo siguiente:
Juan
Roberto
Pablo
Pedro
Alonso
b. El bucle foreach
Este bucle es muy prctico porque no tiene que estar pendiente del tamao de la tabla.
El bucle foreach no usa un contador. Almacena de uno en uno los valores de la tabla en una variable temporal,
que en el siguiente ejemplo es $val. Puede dar a esta variable el nombre que quiera y no necesita definirla.
Da como resultado:
Juan
Roberto
Pablo
Pedro
Alonso
Este bucle tiene otra ventaja: tambin permite mostrar la clave de la tabla:
$tabla = array(A1=>Juan,B4=>Roberto,3=>Pablo,Pepe=>Pedro,
H=>Alonso);
//bucle en la tabla
foreach ($tabla as $clave => $val) {
//muestra los valores concatenados de la tabla
//con un salto de lnea
echo Clave:.$clave., valor:.$val.;
}
?>
Da como resultado:
Clave:A1, valor:Juan
Clave:B4, valor:Roberto
Clave:3, valor:Pablo
Clave:Pepe, valor:Pedro
Clave:H, valor:Alonso
El bucle foreach se escribe con la variable $clave (aunque le puede dar cualquier otro nombre), y contiene la
clave de la tabla, as como el signo => y la variable $val, que contiene el valor correspondiente a la clave.
Tambin puede utilizar el bucle foreach sin la clave, como muestra el siguiente ejemplo:
Da como resultado:
valor:Juan
valor:Roberto
valor:Pablo
valor:Pedro
valor:Alonso
c. print_r
Los programadores utilizan esta funcin para mostrar el contenido de la tabla sin cambiar el formato.
Ejemplo:
Da como resultado:
Array ( [A1] => Juan [B4] => Roberto [3] => Pablo [Pepe] => Pedro [H] => Alonso)
4. Funcin en las tablas
a. Longitud de una tabla
La funcin count() o sizeof() permiten conocer el nmero de elementos de una tabla, por ejemplo:
Da como resultado:
5
La sintaxis es:
$numero_de_elementos = count($tabla);
con $numero_de_elementos de tipo numrico
Esta funcin devuelve 0 si la tabla est vaca.
b. Existencia de un valor en una tabla
La funcin in_array() permite buscar un elemento en una tabla.
Por ejemplo:
//creacin de la tabla
$tabla = array(A1=>Juan,B4=>Roberto,3=>Pablo,Pepe=>Pedro,
H=>Alonso);
if (in_array(Roberto,$tabla)) {
echo Roberto est en la tabla;
}
?>
Da como resultado:
Roberto est en la tabla
Por tanto, su sintaxis es:
$presencia = in_array($valor_bsqueda,$tabla);
con $presencia de tipo booleano.
Esta funcin puede tomar un tercer argumento, que consiste en comprobar el tipo de valor que se encuentra con
respecto al valor deseado. Este argumento es una variable booleana que tiene un valor falso por defecto, es decir,
no tiene en cuenta el tipo.
Explicacin: una tabla tiene el valor 33 pero se est buscando la cifra 33. No son del mismo tipo, ya que 33 es del
tipo string (cadena de caracteres) y 33 es de tipo numrico.
Ejemplo:
Da como resultado:
33 no est en la tabla
La funcin busca en la tabla el nmero 33, pero solamente existe la cadena de caracteres 33.
La sintaxis con el tipo opcional es:
$presencia = in_array($valor_buscado,$tabla,$tipo_equivalente);
con $presencia y $tipo_equivalente de tipo booleano.
c. Existencia de una clave en una tabla
La funcin array_key_exists() permite conocer la existencia de una clave en una tabla.
Por ejemplo:
Da como resultado:
La clave 3 est en la tabla
La sintaxis es:
$presencia = array_key_exists($Clave_buscada,$tabla);
con $presencia de tipo booleano.
Otro ejemplo:
Da como resultado:
La Clave 4 est en la tabla. Su valor es: Alonso
d. Ordenar una tabla
Existen varias funciones que permiten ordenar una tabla. Algunas ordenan en orden descendente, otras siguiendo la
clave y no el valor, etc.
sort(): ordena los valores de menor a mayor.
Por ejemplo:
//creacin de la tabla
$tabla =
array(A1=>Juan,B4=>Roberto,3=>Pablo,Pepe=>Pedro,
H=>Alonso);
sort($tabla); //ordena la tabla
foreach ($tabla as $clave=>$valor) {
echo Clave:.$clave., valor:.$valor.;
}
?>
Da como resultado:
Clave:0, valor:Alonso
Clave:1, valor:Juan
Clave:2, valor:Pedro
Clave:3, valor:Pablo
Clave:4, valor:Roberto
La funcin sort() pierde la clave de origen. Ya no tiene la clave H para Alonso, sino 0. Las claves de origen se
sustituyen por un nmero creciente, comenzando desde 0.
asort(): ordena los valores de menor a mayor, conservando la pareja clave/valor.
Por ejemplo:
Da como resultado:
Clave:H, valor:Alonso
Clave:A1, valor:Juan
Clave:Pepe, valor:Pedro
Clave:3, valor:Pablo
Clave:B4, valor:Roberto
Esta vez las claves se han conservado correctamente.
rsort(): ordena los valores de mayor a menor.
Por ejemplo:
Da como resultado:
Clave:0, valor:Roberto
Clave:1, valor:Pablo
Clave:2, valor:Pedro
Clave:3, valor:Juan
Clave:4, valor:Alonso
arsort(): ordena los valores de mayor a menor, conservando la pareja clave/valor.
Por ejemplo:
Da como resultado:
Clave:B4, valor:Roberto
Clave:3, valor:Pablo
Clave:Pepe, valor:Pedro
Clave:A1, valor:Juan
Clave:H, valor:Alonso
ksort(): ordena las claves de la tabla de la ms pequea a la ms grande, conservando la pareja
clave/valor.
Por ejemplo:
Da como resultado:
Clave:A1, valor:Juan
Clave:B4, valor:Roberto
Clave:H, valor:Alonso
Clave:Pepe, valor:Pedro
Clave:3, valor:Pablo
krsort(): ordena las claves de la tabla de mayor a menor, conservando la pareja clave/valor.
Por ejemplo:
Da como resultado:
Clave:3, valor:Pablo
Clave:Pepe, valor:Pedro
Clave:H, valor:Alonso
Clave:B4, valor:Roberto
Clave:A1, valor:Juan
e. Bsqueda en una tabla
La funcin array_search() equivale a in_array(). Permite buscar un elemento en una tabla, pero vuelve a
enviar la clave del elemento que se ha buscado.
Por ejemplo:
Da como resultado:
La clave del elemento buscado es: B4
La sintaxis es:
$clave = array_search($valor_buscado,$tabla);
Otro ejemplo:
Da como resultado:
La clave del elemento buscado es:1
La clave del elemento Roberto es 1, porque la clave de la tabla empieza por 0.
f. Recorrer una cadena de caracteres en una tabla
La funcin explode()permite recorrer una cadena en una tabla, utilizando un separador.
Por ejemplo:
Da como resultado:
El primer valor de la tabla es:1
El segundo valor de la tabla es:2
La sintaxis es:
$tabla_recortada = explode($separador,$cadena_a_recortar);
Otro ejemplo:
Da como resultado:
Los valores de la tabla son:1;2;3;4;5;
g. Reagrupar los valores de una tabla en una cadena
La funcin implode()permite reagrupar los valores de una tabla en una cadena, utilizando un separador.
Por ejemplo:
Da como resultado:
Los nombres son:Juan;Roberto;Pablo
La sintaxis es:
$cadena = implode($separador,$tabla);
Otro ejemplo:
Da como resultado:
Los nombres son:Juan-Roberto-Pablo
Como puede observar, las claves de una tabla no tienen ningn efecto en la funcin implode().
h. Trocear una cadena con una longitud fija
La funcin str_split()permite trocear en la tabla una cadena de longitud fija, utilizando un parmetro que
indica el tamao de los trozos de la cadena.
Por ejemplo:
Da como resultado:
Los elementos son:1;2;3;4;5;
Por tanto, su sintaxis es:
$tabla=str_split($cadena,$longitud);
Otro ejemplo:
echo "Los elementos son:";
foreach ($tabla as $valor) {
echo $valor."";
}
?>
Da como resultado:
Los elementos son:11=
12=
13=
14=
15=
i. Aadir elementos al final de la tabla
La funcin array_push()permite aadir uno varios elementos al final de la tabla.
Por ejemplo:
Da como resultado:
Alonso
Por tanto, su sintaxis es:
array_push($tabla,$valor1,$valor2,...);
Otro ejemplo:
Da como resultado:
0;1;2;3;4;5;6;7;8;9;10;
j. Eliminar un elemento al final de la tabla
La funcin array_pop() permite eliminar un elemento al final de la tabla y devolver su valor.
Por ejemplo:
Da como resultado:
El nombre eliminado es:Pablo
Por tanto, su sintaxis es:
$valor_eliminado=array_pop($tabla);
Otro ejemplo:
Da como resultado:
Antes de la eliminacin, el nmero de elementos en la tabla es:3
El ltimo nombre eliminado es:Juan
Despus de la eliminacin, el nmero de elementos de la tabla es:0
k. Seleccin de un elemento de la tabla de forma aleatoria
La funcin array_rand() permite seleccionar uno a varios elementos de una tabla de forma aleatoria y devolver
las claves correspondientes.
Por ejemplo:
Da como resultado:
El nombre seleccionado al azar es:Roberto (o Juan o Pablo)
Por tanto, su sintaxis es:
$clave_seleccionada=array_rand($tabla, $numero_seleccionado);
El parmetro $numero_seleccionado es opcional, por defecto es igual a 1. Corresponde al nmero de valores
que se toman al azar. El siguiente ejemplo utiliza:
La $tabla_clave_aleatoria es una tabla que contiene las claves de los elementos seleccionados al azar.
Si $tabla_clave_aleatoria[0] contiene la clave del primer elemento seleccionado al azar, su valor se
obtiene por $tabla[$tabla_clave_aleatoria[0]].
El nmero seleccionado no debe ser igual o superior al nmero de elementos de la tabla.
5. Tabla de varias dimensiones
Una tabla de varias dimensiones es una tabla dentro otra. Puede ser muy til si quiere almacenar informacin rel
Procesamiento de las cadenas de caracteres
1. Funciones de manipulacin de cadenas
En esta parte del captulo se tratan todas las funciones PHP que permiten manipular las cadenas de caracteres.
a. strlen()
La funcin strlen() devuelve la longitud de una cadena de caracteres.
Por ejemplo:
Da como resultado:
La longitud de la cadena es:6
Por tanto, su sintaxis es la siguiente:
$longitud= strlen($cadena);
Otro ejemplo:
Da como resultado:
La longitud de la cadena es:18
Tambin se cuentan los espacios.
b. substr()
La funcin substr() devuelve un trozo de la cadena partiendo de una posicin y con una longitud dada.
Por ejemplo:
$nombre = "Roberto";
$trozo = substr($nombre,2,3);
echo "El trozo de la cadena es:".$trozo;
?>
Da como resultado:
El trozo de la cadena es:ber
La posicin del inicio comienza desde 0.
No necesita indicar la longitud. La funcin devuelve los caracteres hasta el final de la cadena de caracteres.
Por tanto, su sintaxis es:
$trozo_cadena =
substr($cadena,$posicion_inicio,longitud_cadena);
Otro ejemplo:
Da como resultado:
El trozo de la cadena es: Roberto
Al no especificar el ltimo parmetro, la funcin toma la cadena de caracteres hasta el final.
c. strstr()
La funcin strstr() devuelve un trozo de la cadena desde un carcter hasta el final de la cadena.
Por ejemplo:
?>
Da como resultado:
El trozo de la cadena es:@espaa.es
La funcin devuelve la cadena de caracteres, que va del carcter @ hasta el final de la cadena.
Por tanto, su sintaxis es:
$trozo_cadena = strstr($cadena,$caracter_busqueda);
La funcin devuelve false si no se encuentra ninguna cadena de caracteres.
Otro ejemplo:
Da como resultado:
El trozo de la cadena es:.lopez@espaa.es
La funcin devuelve un trozo de cadena desde el primer carcter encontrado.
d. str_replace()
La funcin str_replace() permite sustituir, dentro de la cadena de caracteres principal, un trozo de una cadena
por otra.
Por ejemplo:
Da como resultado:
El nuevo nombre de la cadena es:Roberto.lopez@mexico.es
La sintaxis es:
$nueva_cadena = str_replace($cadena_buscada,
$cadena_que_sustituye ,$cadena_principal);
En el siguiente ejemplo, puede poner una tabla en lugar de la $cadena_buscada:
Da como resultado:
El nuevo nombre de la cadena quitando todas las vocales es: Rbrt.lpz@sp.s
En este ejemplo, la funcin str_replace sustituye todas las vocales de la tabla por una cadena vaca.
e. trim()
La funcin trim() permite eliminar los espacios al principio y al final de la cadena.
Por ejemplo:
Da como resultado:
El nuevo nombre de la cadena es:Roberto.lopez@espaa.es con 23 caracteres
Por tanto, su sintaxis es:
$nueva_cadena = trim($cadena);
Esta funcin elimina los espacios, las tabulaciones y los saltos de lnea.
f. strtolower()
La funcin strtolower() permite convertir una cadena en minsculas.
Por ejemplo:
Da como resultado:
El nombre de la cadena en minsculas es:roberto
Por tanto, su sintaxis es:
$cadena_minusculas = strtolower($cadena);
g. strtoupper()
La funcin strtoupper() permite convertir una cadena en maysculas.
Por ejemplo:
Da como resultado:
El nombre de la cadena en maysculas es:JUAN
Por tanto, su sintaxis es:
$cadena_mayusculas = strtoupper($cadena);
La funcin ucfirst() pone el primer carcter en maysculas. La funcin ucwords() pone la primera letra de cada
palabra en maysculas.
h. strpos()
La funcin strpos() devuelve la posicin de la primera aparicin en una cadena de caracteres.
Por ejemplo:
Da como resultado:
La posicin de @ es:10
Por tanto, su sintaxis es:
$posicion = strpos($cadena,$ocurrencia_buscada);
La posicin empieza desde 0. As, la posicin de j en la cadena $nombre es 0.
Tambin hay otras funciones parecidas, que son:
strrpos(): devuelve la posicin de la ltima aparicin en una cadena de caracteres.
stripos(): devuelve la posicin de la primera aparicin en una cadena de caracteres sin tener en cuenta
las maysculas y minsculas.
Otro ejemplo:
Da como resultado:
La ltima posicin de la letra es:15
i. str_word_count()
La funcin str_word_count() devuelve el nmero de palabras que estn dentro de la cadena de caracteres.
Por ejemplo:
Da como resultado:
El nmero de palabras en la cadena es:4
Por tanto, su sintaxis es:
$posicion = str_word_count($cadena);
Esta funcin puede utilizar un argumento opcional, que es el formato. Si vale 0, la funcin devuelve el nmero de
palabras como antes. Si vale 1, la funcin devuelve una tabla que contiene las palabras de la cadena de caracteres.
Por ejemplo:
Da como resultado:
Array ( [0] => Hola [1] => hace [2] => buen [3] => tiempo)
Si este parmetro vale 2, la funcin devuelve una tabla que contiene las palabras de la cadena de caracteres y la
posicin de la primera letra de la palabra clave.
Por ejemplo:
?>
Da como resultado:
Array ( [0] => Hola [6] => hace [10] => buen [14] => tiempo )
En esta funcin, la nocin de la palabra depende de la localizacin actual. As, la coma no se considera como una
palabra.
j. str_pad()
La funcin str_pad() permite completar una cadena hasta un tamao dado.
Por ejemplo:
Da como resultado:
Hola!!
La funcin toma la cadena de origen "Hola" y la completa con la cadena "!" hasta un total de 10 caracteres.
Por tanto, su sintaxis es:
str_pad($cadena_origen, $numero_carcter_total,
$cadena_para_completar);
El cdigo que muestra los 10 espacios en HTML, es:
2. Las expresiones regulares
Las expresiones regulares permiten realizar bsquedas o sustituciones muy complejas en una cadena de caracteres.
Por ejemplo, si quiere saber si un correo electrnico contiene el carcter @ y el carcter . o si quiere cambiar el
formato de una fecha del ingls al espaol, el uso de expresiones regulares permiten hacerlo en un solo registro.
En este soporte, utilizaremos PCRE (Perl-Compatible Regular Expression), que usa las funciones de expresiones
regulares ms rpidas. Tambin disponemos de POSIX (Portable Operating System Interface), donde las funciones
comienzan por ereg, pero hoy en da estn obsoletas. La codificacin debe hacerse en ANSI en Notepad++, para
que los siguientes ejemplos funcionen correctamente.
La funcin preg_match() devuelve verdad si el valor que se busca est en la cadena de caracteres.
Por ejemplo:
Da como resultado:
La cadena Web se ha encontrado.
Por tanto, su sintaxis es:
$existe = preg_match ($pattern,$cadena);
con $existe de tipo booleano.
$pattern es una cadena que indica a la funcin preg_match()cmo debe realizar la bsqueda. Esta cadena
empieza y termina con un delimitador que suele ser el smbolo /. Aunque tambin podr ver el smbolo #.
En el siguiente ejemplo, la funcin preg_match()comprueba si la cadena "El webdesigner crea un sitio Web."
contiene la cadena "Web".
Esta funcin tiene en cuenta las maysculas y las minsculas.
Por ejemplo:
Da como resultado:
La cadena Web no se ha encontrado.
Porque la palabra WEB es distinta de Web.
La funcin preg_replace() sustituye el contenido por otro que pasa en argumento. Esta funcin devuelve
la cadena de caracteres transformada.
Por tanto su sintaxis es:
$cadena_transformada =
preg_replace($pattern,$cadena_para_sustituir,$cadena original);
a. Las maysculas y las minsculas
Si no quiere tener en cuenta las maysculas y las minsculas, solo tiene que agregar i despus del ltimo /.
Por ejemplo:
Da como resultado:
La cadena Web se ha encontrado.
Como puede observar, la bsqueda se realiza gracias al patrn de bsqueda (pattern). Puede agregarle muchas
otras opciones. Vamos a ver las ms utilizadas.
b. Bsqueda de una palabra, y no una cadena
Hasta ahora, la bsqueda de la cadena de caracteres se realiza en una frase. Por ejemplo, si busca la cadena
"designer":
?>
Da como resultado:
La cadena designer se ha encontrado.
Pero si busca solamente la palabra aquellas palabras que comienzan con "designer", debe agregar\b delante de la
palabra del patrn de bsqueda.
Por ejemplo:
Da como resultado:
La palabra designer no se ha encontrado.
En efecto: designer forma parte de la palabra webdesigner, pero no es una palabra propiamente dicha.
Por el contrario, si escribe:
Da como resultado:
La palabra Web se ha encontrado.
Si desea encontrar una palabra aislada, es suficiente con incluirla dentro de \b.
Por ejemplo:
Muestra:
Se ha encontrado la palabra sitio.
c. El smbolo O
Este smbolo es | , y permite buscar una cadena u otra.
Por ejemplo:
Da como resultado:
La cadena webdesigner o la cadena grafista se ha encontrado.
La cadena "grafista" no existe, pero la cadena "webdesigner" s.
d. Comienzo de la cadena
Este smbolo es y permite buscar una cadena empezando por una palabra.
Por ejemplo:
Da como resultado:
La cadena comienza con la palabra El.
e. Fin de cadena
Este smbolo es $, y permite buscar una cadena que termina con una palabra.
Por ejemplo:
Da como resultado:
La cadena termina con la palabra Web..
f. Un carcter en una clase
Una clase permite definir un conjunto de caracteres que estn en una cadena. Su sintaxis es [...], con los caracteres
dentro de los corchetes.
Por ejemplo:
Da como resultado:
La cadena contiene la cadena bon o bin.
La expresin regular es verdadera si contiene la cadena "bon" o la cadena "bin".
Si escribe: preg_match("/b[aieu]n/",(cadena de caracteres))" entonces la expresin regular sera
verdadera si contiene la palabra "ban" o "bin" o "ben" o "bun".
Por ejemplo:
Da como resultado:
La cadena no termina con la palabra ban o bon o bun.
De este modo, se ha aadido un carcter $ al final de la expresin regular y por tanto la cadena debe terminar con
las palabras ban, bon o bun.
g. Rango de caracteres en una clase
Resulta muy tedioso escribir todas las letras del alfabeto y los dgitos del 0 al 9 en una clase. Afortunadamente, el
smbolo - (guin), permite definir un rango de caracteres o nmeros.
Por ejemplo:
Da como resultado:
La cadena contiene la cadena pue.
La expresin regular es verdadera si la cadena contiene otra cadena que comienza con p, seguida de cualquier otra
letra del alfabeto y despus una e. Por tanto, la palabra "puerto" encaja bien en este supuesto.
Otro ejemplo:
Da como resultado:
La cadena contiene un espacio y una cifra entre 0 y 9.
La expresin regular es verdadera si la cadena contiene un espacio seguido de una cifra entre 0 y 9. Como la cadena
contiene el nmero 10 precedido de un espacio, cumple la expresin regular.
h. La no presencia de un rango de caracteres en una clase
Si no quiere los caracteres de una clase, tiene que agregar el smbolo al principio de la clase. Este smbolo es el
mismo que el que indica la palabra al comienzo de la cadena.
Por ejemplo:
if (preg_match("/n[a-z]/","Ponemos una admiracin!")) {
echo "La cadena contiene la letra n seguida de un carcter no
alfabtico.";
}
else {
echo "La cadena no contiene la letra n seguida de un carcter no
alfabtico.";
}
?>
Da como resultado:
La cadena contiene la letra n seguida de un carcter no alfabtico.
En efecto, la palabra admiracin contiene una letra n seguida de un carcter que no es una letra, por lo que la
expresin regular devuelve verdadero.
i. Los cuantificadores
Los cuantificadores sirven para definir el nmero de veces que se repite un carcter o una clase. Los tres principales
cuantificadores son:
El smbolo ?: indica que no aparece el carcter o la clase anterior.
Por ejemplo:
Da como resultado:
La cadena contiene dam o dm.
La expresin regular busca en la cadena "En el puerto de Amsterdam" la letra d seguida de la letra a y de la letra m.
El smbolo + indica una o varias apariciones del carcter o de la clase anterior.
Por ejemplo:
Da como resultado:
La cadena contiene dam o daam o daaam...
La expresin regular busca en la cadena "En el puerto de Amsterdam" la letra d seguida de una o varias veces la
letra a y de la letra m.
El smbolo * indica cero, una o varias apariciones del carcter o de la clase anterior.
Por ejemplo:
Da como resultado:
La cadena contiene dm o dam o daam o daaam...
La expresin regular busca en la cadena "En el puerto de Amsterdam" la letra d seguida de una o varias veces la
letra a y seguida de la letra m.
j. Intervalos de reconocimiento
Sirven para definir con precisin cuntas veces se puede repetir un carcter o un grupo de caracteres. Este intervalo
se realiza con las llaves {}.
Si quiere que la letra "a" se repita exactamente dos veces, la expresin regular es: a{2}
Si quiere que la letra "a" se repita al menos dos veces, la expresin regular es: a{2,}
Si quiere que la letra "a" se repita entre dos y cinco veces, la expresin regular es: a{2,5}
Por ejemplo:
Da como resultado:
Est por lo menos una vez el nmero 1 en su N de telfono.
Si en su expresin regular pone una cadena con un ?, por ejemplo, si quiere buscar la cadena "Quin?", no tiene
que interpretar el ? como un cuantificador que indica 0 o 1 del carcter anterior. Para evitar esto, tiene que usar el
smbolo \ (barra invertida) que permite evitar el smbolo siguiente \, es decir, no interpretarlo como un smbolo,
sino como un carcter.
Por ejemplo:
Da como resultado:
Est el carcter ? en su frase.
Atencin: Los smbolos ?, +, , *, $ se interpretan como caracteres, y no como smbolos de expresiones regulares
cuando estn dentro de una clase [...].
Observe que resulta muy difcil escribir una expresin regular. Por fortuna, puede encontrar fcilmente en Internet
las expresiones regulares ms utilizadas.
A continuacin encontrar una expresin regular que comprueba si una direccin de correo electrnico es vlida:
Da como resultado:
La direccin de correo electrnico es vlida.
Los operadores
1. Operadores de cadena
a. La concatenacin
Ha tenido la oportunidad de ver, en el captulo Las bases del lenguaje PHP, la concatenacin, que se designa
con . (punto) o , (coma), y que permite unir dos cadenas de caracteres.
Por ejemplo:
Da como resultado:
Juan ESTEFANIA
b. Asignacin
Se utiliza desde un principio en todos los ejemplos.
La asignacin se designa con el signo =. Permite asignar un valor a una variable.
Tambin puede utilizar la combinacin .=, que permite concatenar una cadena a una variable y asignarla a esta
variable.
Por ejemplo:
Es igual a:
Da como resultado:
Juan Lpez
2. Operadores aritmticos
a. La suma
El operador se designa por +.
Por ejemplo:
Da como resultado:
16
b. La resta
El operador se designa por -.
Por ejemplo:
Da como resultado:
6
c. La multiplicacin
El operador se designa por *.
Por ejemplo:
Da como resultado:
33
d. La divisin
El operador se designa por /.
Por ejemplo:
$resultado = $numero / 5;
echo $resultado;
?>
Da como resultado:
2
e. El mdulo
Este es el resultado de dividir el dividendo por el divisor. El operador se designa por %.
Por ejemplo:
Da como resultado:
1
En efecto, 11 es igual a 10 + 1. 10 es divisible por 5 y resta 1.
Este operador es muy til para saber si un nmero es divisible por otro.
Por ejemplo:
Da como resultado:
El nmero 11 no es divisible por 5
f. El incremento
El operador se designa por ++. El orden en que se ubica el operador tiene mucha
importancia.++$numero incrementa $numero y devuelve $numero, mientras que $numero++ devuelve$numero y lo
incrementa.
Por ejemplo:
Da como resultado:
11;11
Otro ejemplo:
Da como resultado:
10;11
g. La resta
El operador se designa por --.
Por ejemplo:
echo ";";
echo $numero;
?>
Da como resultado:
9;9
Otro ejemplo:
Da como resultado:
10;9
3. Operadores de comparacin
a. La igualdad
El operador se designa por ==.
Por ejemplo:
Da como resultado:
Los dos nmeros son idnticos
En efecto, los nmeros 11 y 11.0 no son del mismo tipo, pero los valores son iguales.
Por el contrario, el operador === prueba el valor y el tipo. Por tanto, 11, de tipo int, es distinto de 11.0, que es de
tipo float.
Ejemplo:
Da como resultado:
Los dos nmeros no son idnticos
b. La diferencia
El operador se designa por !=.
Por ejemplo:
Da como resultado:
El nmero y la cadena no son diferentes
Por el contrario, !== prueba el valor y el tipo de las dos variables, por tanto:
Da como resultado:
El nmero y la cadena son diferentes
c. La comparacin
El operador inferior a se designa
Da como resultado:
El nmero 11 es estrictamente inferior al nmero 12
El operador inferior o igual a se designa .
Por ejemplo:
Da como resultado:
El nmero 11 no es estrictamente superior al nmero 12
El operador superior o igual se designa >=.
4. El operador ternario
El operador se designa por ?. Es igual a if else, pero en una sola lnea. Su sintaxis es:
condicin?expresin1:expresin2
Si la condicin es verdadera, se utiliza la expresin1, y se utiliza la expresin2 si no lo es.
Por ejemplo:
Da como resultado:
Los dos nmeros no son idnticos
Los valores de $numero_1 y $numero_2 son distintos, entonces la condicin ($numero_1 == $numero_2) es falsa y
por tanto se muestra la expresin2, es decir, "Los dos nmeros no son idnticos".
5. Operadores lgicos
a. Y
El operador se designa por && o and.
Por ejemplo:
Da como resultado:
ok
Para que se compruebe la condicin if, es necesario que $edad sea igual a 10 y que $nombresea igual a "Juan".
Como se da el caso, muestra ok.
b. O
El operador se designa por || u or.
Por ejemplo:
echo "no correcto";
}
?>
Da como resultado:
ok
Para que se compruebe la condicin if, $edad debe ser igual a 10 o bien $nombre igual a "Juan". Como es el caso,
muestra ok.
Otro ejemplo:
Da como resultado:
no correcto
No existe ni $nombre igual a "Juan", ni $edad igual a 10, entonces la condicin if es falsa y por tanto se ejecuta el
cdigo correspondiente al bloque del else (si no).
Si los operadores || y && estn seguidos, el operador && tiene prioridad sobre el operador ||.
Otro ejemplo:
else {
echo "no correcto";
}
?>
Y es igual a:
Da como resultado:
ok
En este supuesto, si pone los parntesis, ocurre lo siguiente:
Y da como resultado:
no correcto
Por tanto, segn donde ponga los parntesis, el significado de la condicin puede ser completamente diferente.
Las funciones
1. Creacin
Las funciones permiten reutilizar varias veces el cdigo PHP. Por ejemplo, si tiene una pgina Web con precio sin IVA
de diferentes productos, puede crear una funcin para calcular el precio con IVA de cada producto. Esto evita
escribir en cada lnea el clculo en PHP. En su desarrollo, intente agrupar el cdigo. As el mantenimiento es ms
fcil. De hecho, cuanto ms se escribe el cdigo, es ms probable que cometa errores.
La sintaxis para crear una funcin es: funcin nombre_de_la funcin ($argumento) { }
Nunca ponga espacios ni caracteres especiales en el nombre de una funcin. El parmetro tambin se llama
argumento.
Intente nombrar la funcin con palabras separadas por el smbolo _ o con maysculas que expliquen lo que hace la
funcin, por ejemplo: nombre_de_la_funcin o NombreDeLaFuncin.
Por ejemplo:
Esta funcin calcula el precio con IVA a partir del precio sin IVA, que pasa como parmetro, y devuelve el resultado
a travs de la palabra clave return. Una funcin no est obligada a devolver un resultado; puede servir solo para
mostrar un mensaje, por ejemplo.
Para recurrir a esta funcin, escriba lo siguiente:
Por ejemplo:
O al final:
?>
Da como resultado:
12 euros sin IVA corresponden a 14.52 euros con IVA
El nmero 12 pasa con el parmetro de la funcin; por tanto $precio_bruto se convierte en igual a 12, y la
funcin devuelve 12*1.21 (14.52) en la variable $precio_iva.
Puede crear funciones que tomen varios parmetros o ningn parmetro.
En el siguiente ejemplo, la funcin toma varios parmetros y devuelve un valor:
Da como resultado:
Hola Juan ESTEFANIA
En el siguiente ejemplo, la funcin no toma ni devuelve ningn valor:
Da como resultado:
Hola
2. Alcance de las variables
Este concepto es muy importante porque es el origen de muchos errores, sobre todo para aquellas personas que no
han aprendido las nociones generales del desarrollo.
Las variables declaradas o que pasan como argumentos a una funcin solo son vlidas en la funcin.
Por ejemplo:
Da como resultado:
Hola
Notice: Undefined variable: nombre
La variable $nombre solo es vlida en la funcin muestra_palabra.
Para evitar este error, defina la variable $nombre fuera de la funcin:
Da como resultado:
Hola Juan
Atencin: la variable $nombre definida antes que la funcin no es la misma que $nombre pasada con el
parmetro de la funcin.
Lo mismo ocurre con una variable declarada fuera de la funcin, que tampoco es vlida en la funcin.
Por ejemplo:
$nombre = "Juan";
function muestra_palabra() {
echo $nombre; //muestra un error
}
muestra_palabra();
?>
Da como resultado:
Notice: Undefined variable: nombre
3. Las variables globales
Puede declarar una variable con la palabra clave global. Esto tiene como efecto definir la variable en todo el cdigo
PHP de su pgina y en las funciones.
Si retomamos el ejemplo anterior agregando $nombre como variable global en la funcin:
Da como resultado:
Juan
La otra solucin consiste en utilizar la tabla asociativa $GLOBALS, que contiene todas las variables con su valor.
Esta tabla tiene un alcance global a toda la pgina php (captulo Transmitir datos de una pgina a otra - Las
variables superglobales).
4. Las variables estticas
Una variable declarada con la palabra clave static en una funcin permite conservar su valor cuando se llama
varias veces a la funcin. De hecho, elimina el valor de la variable cada vez que se llama a la funcin:
$numero=$numero + 1;
echo $numero."; ";
}
muestra_numero(); //muestra 1
muestra_numero(); //muestra 1
?>
Da como resultado:
1; 1;
En el siguiente ejemplo, $numero se declara como static:
Da como resultado:
1; 2;
De esta manera, $numero conserva su valor de una llamada a otra de la funcin.
5. Funciones tiles
La funcin isset() permite probar que existe una variable. Si existe, devuelve true, y si no existe, false.
Por ejemplo:
}
?>
Da como resultado:
La variable existe.
Por tanto, su sintaxis es:
$existe = isset ($variable);
La funcin var_dump() permite mostrar el tipo de contenido y el contenido de una variable.
Por ejemplo:
Da como resultado:
string(21) "Hola, hace buen tiempo"
Por tanto, su sintaxis es:
var_dump($variable);
Esta funcin tambin acepta las tablas como parmetro.
Por ejemplo:
Da como resultado:
array(3) { [0]=> string(6) "Fresa" [1]=> string(6) "Pltano" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }
La funcin empty() permite comprobar si una variable es o no nula. Devuelve true si es nula, y false si
no lo es.
Por ejemplo:
Da como resultado:
La variable no es nula.
Desde PHP5.5 puede pasar como argumento de una funcin.
Por ejemplo:
Da como resultado:
Se mostrar esto
Por tanto, su sintaxis es:
$nula = empty ($variable o function());
6. Paso por referencia
Cuando una variable se pasa como argumento de una funcin, se pasa por el valor, es decir, es una copia de la
variable que se ha pasado como argumento.
Ejemplo de paso por el valor:
Da como resultado:
Hola
Se pasa la variable $texto como argumento a la funcin; no se cambia su valor en la funcin, solo se enva su
valor a la funcin.
El paso del parmetro se realiza agregando el smbolo & delante de la variable. Tiene como efecto pasar la direccin
de memoria de la variable y as puede modificar su valor.
Ejemplo de paso por referencia:
Da como resultado:
Hola Seor
Se pasa la variable $texto como argumento a la funcin con ayuda de &$argumento y se modifica al
concatenar $argumento con la cadena de caracteres " Seor". Al salir de la funcin,$texto tiene como
valor $argumento, es decir, "Hola Seor".
7. Funciones de la funcin de gestin
La funcin func_get_arg(int $numero) devuelve un elemento de la lista de argumentos de entrada,
es decir, los argumentos que se han pasado con $numero, como el nmero del argumento.
Por ejemplo:
Da como resultado:
El valor del primer argumento es:Hola
El valor del segundo argumento es:Roberto
La funcin func_num_args() devuelve el nmero de argumentos de entrada, es decir, los argumentos que
se han pasado.
Por ejemplo:
Da como resultado:
El nmero de argumentos es:2
La funcin func_get_args() devuelve los argumentos que pasan como argumentos en forma tabla.
Por ejemplo:
?>
Da como resultado:
El argumento 0 es:Hola
El argumento 1 es:Roberto
La funcin function_exists() devuelve un booleano e indica si una funcin existe o no.
Por ejemplo:
Da como resultado:
La funcin existe.
Puede crear su funcin de manera dinmica con ayuda de la funcin create_function(). Para ms informacin,
visite la pgina Web: www.php.net/manual/es/function.create-function.php
8. Recursividad
La recursividad significa que una funcin se llama a s misma. Es muy til para navegar en una arborescencia, sobre
todo si se desconoce de antemano el nmero de ramas.
Por ejemplo:
}
}
funcion_recursiva(0); // muestra los nmeros de 1 a 10
?>
Da como resultado:
1,2,3,4,5,6,7,8,9,10,
En la condicin if($n < 10), la funcin se llama a s misma, y se puede llamar hasta diez veces en total. De
hecho, si no hubiera una condicin ($n < 10), el bucle sera infinito.
A continuacin veremos el cdigo que muestra los valores de las tablas tridimensionales:
}
}
} else { // no hay datos
echo ;
}
}
// Declaracin de las tablas.
$tab_caracteristica_ESTEFANIA = array("nombre" => "PABLO",
"profesin" => "ministro","edad" => 50);
$tab_caracteristica_LUNA= array("nombre" => "ROBERTO",
"profesin" => "agricultor","edad" => 45);
$tab_persona[ESTEFANIA] = $tab_caracteristica_ESTEFANIA;
$tab_persona[LUNA] = $tab_caracteristica_LUNA;
// Mostrar una tabla con dos dimensiones (Apellido/
Caractersticas).
mostrar_tabla($tab_persona,Apellido/Caractersticas);
?>
Da como resultado:
Apellido/Caractersticas
ESTEFANIA =
nombre = PABLO
profesin = ministro
edad = 50
LUNA =
nombre = ROBERTO
profesin = agricultor
edad = 45
La principal ventaja de esta funcin recursiva es que, si tiene una tabla de tres, cuatro o ms dimensiones, no es
preciso cambiar el cdigo, porque no depende del nmero de dimensiones.
9. Funciones predefinidas en PHP
Hay alrededor de 4500 funciones predefnidas en PHP. Las puede consultar en la siguiente pgina Web, donde estn
agrupadas por temas: http://www.php.net/manual/es/funcref.php
Ya ha visto algunas de ellas en secciones anteriores, como substr() o implode(). Ahora vamos a ver algunas
funciones complementarias que son tambin muy tiles.
a. Generar un nmero aleatorio
La funcin rand() permite generar un valor aleatorio comprendido entre 0 y 32768. Puede pasar como argumento
de entrada unos lmites mnimo y mximo.
Por ejemplo:
Da como resultado:
24751
13
b. Redondear un nmero decimal
La funcin round($numero_decimal) permite redondear un nmero decimal.
Por ejemplo:
Da como resultado:
3
Esta funcin acepta la precisin como argumento complementario, es decir, el nmero de dgitos que quiera poner
despus de la coma.
Por ejemplo:
Da como resultado:
3.14
Otro ejemplo:
Da como resultado:
3.78
Es decir se ha redondeado el nmero.
c. Tomar el valor absoluto de un nmero
La funcin abs($nombre) permite recuperar el valor absoluto de un nmero.
Por ejemplo:
Da como resultado:
5.2
Esta funcin acepta como parmetro una cadena de caracteres.
Por ejemplo:
Da como resultado:
68
d. Crear un identificador nico
La funcin uniqid() permite generar de forma aleatoria un valor de trece caracteres, de tal manera que este
valor sea nico. A veces es muy til para generar identificadores nicos que se van a insertar en la base de datos.
Por ejemplo:
Da como resultado:
Id nico:4df0d26502f82, Id nico:4df0d26502f86, Id nico:4df0d26502f87
e. Mostrar informacin de PHP
La funcin phpversion() permite mostrar la versin actual de PHP.
Por ejemplo:
Da como resultado:
5.3.3
La funcin phpinfo() permite mostrar informacin de la configuracin de PHP que ha instalado en su servidor,
como las variables de entorno o la configuracin de Apache. Esta informacin se almacena en el archivo php.ini,
cuya utilizacin se explicar en el siguiente captulo.
Por ejemplo:
La funcin ini_get_all() devuelve toda la informacin del archivo PHP.ini, pero en forma de tabla.
Para terminar, la funcin get_loaded_extensions() devuelve una tabla que contiene todas las extensiones
que se han descargado. Lo veremos en el captulo Configuracin.
f. Enviar un e-mail
La funcin mail() permite enviar un e-mail. Es una funcin bsica que no debe utilizar si quiere enviar un gran
volumen de mensajes de correo electrnico, porque con cada envo cierra y vuelve a abrir una conexin al servidor.
Hay otras funciones ms prcticas y eficaces, como PEAR o PHPMailer. Sin embargo, el estudio de esta funcin
permite ver las bases de envo de un e-mail, que son comunes a todas las funciones.
Los parmetros de la funcin son:
$to: los destinatarios del e-mail
$subject: asunto del e-mail
$message: contenido del e-mail
$headers: parmetro opcional que contiene el encabezado del e-mail
El encabezado permite definir el remitente del e-mail (From), el tipo MIME, la codificacin y otros parmetros. Puede
encontrar ms informacin en el siguiente enlace:
http://www.php.net/manual/es/function.mail.php
El remitente (From), la direccin SMTP y el nmero de puerto SMTP se definen en el archivo PHP.ini, al que puede
acceder desde el men Configuracin - PHP.
Por ejemplo:
La funcin mail() no se puede autentificar y por tanto no funciona en modo local si, por ejemplo, utiliza el servidor
SMTP de Gmail. Deber utilizar la librera Mail-1.2.0 de PEAR que est disponible en la siguiente
direccin: http://pear.php.net/package/Mail/download/1.2.0/
El e-mail que ha envado est en formato texto. Para enviarlo en formato HTML, debe declarar este formato en el
encabezado (header):
$headers = From: webmaster@misitio.com."\r\n"
Reply-To: webmaster@misitio.com."\r\n"
MIME-Version: 1.0."\r\n"
Content-type: text/html; charset=iso-8859-1."\r\n";
Almacenar una funcin en una variable
PHP permite almacenar una funcin en una variable. Solo tiene que pasar como argumento el nombre de una
funcin que ya existe.
Por ejemplo:
Da como resultado:
6 + 4 =10, 6 - 4 =2
Observe que el tipo de operacin se pasa como parmetro a la funcin operacion. Esta funcin recupera el tipo
de operacin (aadir, por ejemplo) y va a recurrir a la funcin aadir con sus parmetros. Pero para que esto
funcione, ya debe existir la funcin aadir.
Este concepto puede ser de gran utilidad si crea el objeto en PHP, como veremos ms adelante.
1. Ejercicio
a. Enunciados
Ejercicio 1 (dificultad media)
Cree une funcin que muestre una frase que contenga de forma aleatoria las tres palabras Hola, Seor y
Roberto. Cada palabra solo puede aparecer una vez. Esta funcin recibe como parmetros las tres palabras
Hola, Seor y Roberto.
Ejercicio 2 (difcil)
Cree una tabla que contenga diez dgitos aleatorios comprendidos entre 1 y 100, y ordnelos, utilizando mtodos
como la ordenacin de tabla o sort(). Debe crear una funcin que intercambie dos valores en una tabla. Muestre
estos valores separados por una coma.
Ejercicio 3 (medio)
Escriba una funcin que permita calcular el factorial de un nmero de manera recursiva.
Por ejemplo, el factorial de 7 es: 1*2*3*4*5*6*7
Muestre entonces el factorial de 20 (2.4329020081766E+18).
Ejercicio 4 (difcil)
Retome el ejercicio 1, pero ahora debe generalizar la funcin para que tome como parmetro una tabla que
contenga cualquier nmero de palabras.
Ejercicio 5 (difcil): creacin de una tabla HTML con valores al cubo
La tabla A tiene los elementos 3, 8, 15 y 16. Cree una tabla B con ayuda de un bucle que contenga todos los
elementos comprendidos entre 1 y 20, salvo los elementos de la tabla A. Cree una funcin que calcule al cubo este
dgito. Muestre en una tabla HTML los elementos de la tabla B en la primera columna y en una segunda columna los
elementos de B al cubo.
b. Soluciones
Solucin del ejercicio 1
}
$palabra1 = "Hola";
$palabra2 = "Seor";
$palabra3 = "Roberto";
muestra($palabra1,$palabra2,$palabra3);
?>
Solucin del ejercicio 2
// Procesar el resto de la tabla
$longitud--;
}
//mostrar la tabla
for ($i=1;$i
Solucin del ejercicio 3
Solucin del ejercicio 4
}
}
foreach ($tabla_fin as $val) {
echo $val." ";
}
}
$tabla_palabra[0] = "Hola";
$tabla_palabra[1] = "Seor";
$tabla_palabra[2] = "Roberto";
$tabla_palabra[3] = "Pepe";
muestra($tabla_palabra);
?>
Solucin del ejercicio 5
echo "";
?>
Las fechas
En esta parte tratamos todas las funciones PHP que permiten manipular las fechas. Normalmente las fechas se
recuperan en un formato con un idioma concreto, y esto le obliga a convertirlas a su idioma.
La funcin time() devuelve la hora actual, que se mide en segundos desde el inicio de UNIX (1 de Enero de
1970 00:00:00 GMT). Esta hora tambin se llama timestamp UNIX.
Por ejemplo:
Da como resultado:
1381329777
Por tanto, su sintaxis es:
time()
Esta funcin se utiliza sobre todo para realizar clculos con fechas, por ejemplo para encontrar la duracin de
procesamiento en la base de datos.
La funcin date() devuelve la fecha en el formato que se ha pasado como argumento.
Por ejemplo:
Da como resultado:
09.10.13
Por tanto, su sintaxis es:
$fecha_del_dia = fecha($formato)
siendo $formato una cadena que contiene las letras que permiten definir el formato.
A continuacin mostramos una lista con los principales formatos que se utilizan en la funcin date. Esta lista no es
exhaustiva y puede encontrar ms informacin en el siguiente
enlace:http://www.php.net/manual/es/function.date.php
Da
J Da del mes con dos dgitos sin ningn cero inicial: de 1 a 31.
d Da del mes con dos dgitos con un cero inicial en la funcin del da: de 01 a 31.
l (L minscula) Da de la semana en ingls: de Sunday a Saturday.
w Da de la semana con un formato numrico de 0 (domingo) a 6 (sbado).
z Da del ao: de 0 a 366.
Semana
W Nmero de la semana en el ao (las semanas empiezan el lunes). Ejemplo: 42 (la 42. semana del ao).
Mes
F Mes, textual, versin amplia en ingls, como por ejemplo January o December.
m Mes en formato numrico, con ceros iniciales: de 01 a 12.
n Mes sin ceros iniciales: de 1 a 12.
t Nmero de das en el mes: de 28 a 31.
Ao
L Ao bisiesto: 1 si es bisiesto, 0 si no lo es.
Y Ao con cuatro dgitos (por ejemplo, 1999 y 2003).
y Ao con dos dgitos (por ejemplo, 99 y 03).
Hora
a Ante merdiem y Post merdiem (minsculas): am o pm.
A Ante merdiem y Post merdiem (maysculas): AM o PM.
g Hora (formato 12 h) sin ceros iniciales: de 1 a 12.
G Hora (formato 24 h) sin los ceros iniciales: de 0 a 23.
h Hora (formato 12 h) con ceros iniciales: de 01 a 12.
H Hora (formato 24 h) con ceros iniciales: de 00 a 23.
s Segundos con ceros iniciales: de 00 a 59.
i Minutos con ceros iniciales: de 00 a 59.
Esta funcin date() puede tomar tambin como parmetro opcional el timestamp UNIX para definir otra fecha
distinta a la fecha del da que quiere mostrar.
Por ejemplo:
$ProximaSemana = time() + (7 * 24 * 60 * 60);// Aadir una semana a
//la hora actual. O 7 das = 7x24 horas = 7x24x60 minutos =
//7x24x60x60 segundos
echo "Hoy: ".fecha(d-m-Y).", ";
echo "Prxima semana: ".fecha(d-m-Y, $Proximasemana)."\n";
?>
Da como resultado:
Hoy: 01-02-2013, Prxima semana: 08-02-2013
La funcin mktime() devuelve el timestamp UNIX desde una fecha que se pasa como parmetro.
Por ejemplo:
Da como resultado:
1328050800
Su sintaxis es:
$timestamp = mktime($hora,$minuto,$segundo,$mes,$da,$ao)
Esta funcin corrige los datos no vlidos automticamente. Por ejemplo, 32 de Enero se corregir como 1 de
Febrero.
La funcin microtime() devuelve el timestamp UNIX en microsegundos. Como parmetro opcional utiliza
un booleano, que permite devolver un nmero real si es verdadero, o una cadena de caracteres si no lo es.
Por ejemplo:
?>
Da como resultado:
0.31211200 1328104356
1328104356.3121
0.3121
Por tanto, su sintaxis es:
$microsegundo = microtime($bool)
La funcin getdate() devuelve una tabla asociativa de la fecha y la hora actuales.
Por ejemplo:
Da como resultado:
Array ( [seconds] => 37 [minutes] => 48 [hours] => 10 [mday] => 15 [wday] => 3 [mon] => 6 [year] => 2011 [yday] => 165
[weekday] => Wednesday [month] => June [0] => 1308127717 )
Por tanto, su sintaxis es:
$tabla = getdate()
La funcin checkdate() indica si una fecha es vlida o no. Esta funcin tiene en cuenta los aos bisiestos.
Toma como parmetros el mes, el da y el ao, y devuelve verdadero o falso.
Por ejemplo:
?>
Da como resultado:
La fecha no es vlida
De hecho, no existe el decimotercer mes.
Por tanto, su sintaxis es:
$valido = checkdate($mes,$da,$ao)
La funcin strtotime() permite convertir un texto en ingls en timestamp, por tanto en fecha.
Por ejemplo:
Da como resultado:
1381822566, 15-10-2013
1315605600, 10-09-2011
1381960800, 17-10-2013
1381183200, 08-10-2013
1381908966, 16-10-2013
1382427366, 22-10-2013
1383215768, 31-10-2013
Por tanto, su sintaxis es:
$timestamp = strtotime($cadena)
La funcin strftime() permite convertir una fecha que tiene la forma de timestamp en una cadena
formateada correctamente. Toma como parmetro el formato de tipo cadena de caracteres y timestamp como opcin, si no quiere la fecha actual. Esta funcin se utiliza consetlocale(), que permite definir el
pas en el que nos encontramos.
Por ejemplo:
Da como resultado:
En Espaa el da es: mircoles
Hoy es 09 10 2013
En Francia el mes es Octobre.
Por tanto, su sintaxis es:
$cadena = strftime($formato)
Opciones de formato:
%d: da del mes, con dos dgitos: de 01 a 31.
%m: nmero del mes, con dos dgitos: de 01 a 12.
%y: ao con dos dgitos: por ejemplo, 01.
%Y: ao con cuatro dgitos: por ejemplo, 2001.
%H: hora, con formato 24 h.
%M: minutos con dos dgitos: de 00 a 59.
%S: segundos con dos dgitos: de 00 a 59.
%a: nombre abreviado del da de la semana.
%A: nombre completo del da de la semana.
%j: nmero del da del ao con tres dgitos: de 001 a 365.
%w: nmero del da de la semana: de 0 = domingo a 6 = sbado.
%u: nmero del da de la semana: de 1 = lunes a 7 = domingo.
%b o %h: nombre abreviado del mes.
%B: nombre completo del mes.
%U: nmero de la semana en el ao: el primer domingo del ao, siendo el primer da de la primera semana.
%W: nmero de la semana en el ao: el primer lunes del ao, siendo el primer da de la primera semana.
%V: nmero de la semana en el ao segn la normativa ISO 9601.
%c: formato por defecto para la fecha y la hora.
%x: formato por defecto solo para la fecha.
%X: formato por defecto solo para la hora.
%R: idntico a %H: %M.
%T: idntico a %H: %M: %S.
%Z: franja horaria, nombre o abreviatura.
%t: tabulacin.
%n: vuelta al registro.
%%: un carcter % literal.
La funcin date_default_timezone_set() establece la diferencia horaria de todas las funciones de
fecha y hora. Esta funcin toma como parmetro el identificador de diferencia horaria, que es una cadena de
caracteres con la zona y el pas. Si quiere formatear la fecha, debe definir la zona de diferencia horaria; de
lo contrario, tendr un mensaje de advertencia de tipo E_NOTICE.
Por ejemplo, en Espaa:
La funcin date_create_from_format() permite devolver un objeto date que se formatea desde una
cadena de caracteres que contiene una fecha. Esta funcin tambin se llama DateTime::createFromFormat(). Toma como parmetro el formato de tipo cadena de
caracteres, la fecha y la hora en forma de cadena de caracteres y, como opcin, el objetoDateTimeZone, que define la zona de diferencia horaria. El formato es el mismo que el que se utiliza con la funcin date().
Por ejemplo:
Da como resultado:
Muestra con el formato da-mes-ao hora:minuto:segundos -> 15-11-2011 12:14:19
Los archivos
1. Introduccin
A veces resulta muy til almacenar informacin en un archivo del servidor, en lugar de en la base de datos. Puede
ser ms rpido y accesible; sin embargo, es menos seguro y pueden surgir errores en la escritura si hay conexiones
simultneas.
A lo largo de esta parte vamos a ver las funciones ms utilizadas.
Para empezar, debe crear un archivo llamado archivo.txt en el directorio www, es decir, donde estn sus pginas
PHP. Este archivo debe tener derechos de escritura para poder escribir en ellos. Esto se produce automticamente
cuando trabaja en modo local, pero probablemente tendr que cambiar los permisos del archivo si lo transfiere por
FTP a otra ubicacin.
2. Lectura rpida
La funcin file_get_contents() permite leer el contenido de un archivo y lo devuelve en una cadena de
caracteres.
En el siguiente ejemplo, el archivo texto contiene la frase "Hola!"
Da como resultado:
"Hola!"
La funcin readfile() tambin permite leer el contenido de un archivo, pero devuelve el nmero de
caracteres del archivo y muestra automticamente el contenido.
En el siguiente ejemplo, el archivo de texto contiene la frase "Hola!"
Da como resultado:
"Hola!"
El nmero de caracteres del archivo es:8
La funcin file() permite leer el contenido de un archivo, pero devuelve el contenido en una tabla, lnea
por lnea.
En este ejemplo, el archivo de texto contiene la frase "Hola!", un salto de lnea y la frase "Seora ESTEFANIA."
Da como resultado:
"Hola!"
"Seora ESTEFANIA."
Cada lnea del archivo se vuelve a encontrar en cada elemento de la tabla.
3. Escritura rpida
La funcin file_put_contents() permite escribir en un archivo el contenido de una cadena de caracteres.
Toma como parmetro el nombre del archivo y la variable que contiene el texto que va a insertar en el archivo. Si ya
existe el archivo, su contenido se elimina.
Por ejemplo:
$contenido = "Hola Sra. ESTEFANIA.";
file_put_contents("archivo.txt",$contenido);
?>
Escrito en el archivo llamado archivo.txt:
Hola Sra. ESTEFANIA.
4. Abrir y cerrar un archivo
La funcin fopen() permite desencadenar la apertura del archivo. Esta funcin tiene dos parmetros: el nombre
del archivo y el modo de apertura del archivo.
Por ejemplo:
La variable $recurso contiene un objeto que permite manipular el archivo. Veremos ms adelante cmo se utiliza.
Observe que el carcter r es el segundo parmetro.
La r abre el archivo solo en modo de lectura.
La r+ abre el archivo en modo de lectura y escritura.
La w abre el archivo solo en modo de escritura, vaca el archivo y lo crea si an no existe.
La w+ abre el archivo en modo de lectura y escritura, vaca el archivo y lo crea si an no existe.
La a abre el archivo solo en modo de escritura y adems crea el archivo si an no existe. Lo que escriba despus
no modificar el texto que ya existe.
La a+ abre el archivo en modo de lectura y escritura y adems crea el archivo que an no existe.
La funcin fclose() permite cerrar el archivo. Esta funcin devuelve true o false en caso de error.
Por ejemplo:
5. Leer y escribir
La funcin fgetc() permite leer el archivo carcter a carcter. Es preciso que incluya un bucle para navegar por
todos los caracteres del archivo.
Por ejemplo:
Da como resultado:
"Hola!" "Seora ESTEFANIA."
Observe que no lee el salto de lnea; por tanto esta funcin no es muy prctica.
La funcin fgets() permite leer el archivo lnea a lnea. Por tanto, es preciso incluir esta funcin en un bucle
para navegar por todas las lneas del archivo. Toma como parmetro el recurso del archivo y el tamao de
cada lnea como opcin. La funcin recupera este nmero de caracteres o los caracteres hasta que se
encuentra un final de lnea.
Por ejemplo:
}
fclose($recurso);
?>
Da como resultado:
"Hola!"
"Seora ESTEFANIA."
La funcin feof() devuelve true si se encuentra al final del archivo.
Si quiere mostrar las lneas de cinco en cinco caracteres:
Da como resultado:
"Hol
a!""
Seor
a EST
EFANI
A."
La funcin fread() permite leer un archivo completo y devolver su contenido en una cadena de caracteres.
Toma como parmetro el recurso, y como opcin, la longitud mxima en bytes.
Por ejemplo:
$recurso = fopen(archivo.txt, r);
if ($recurso) {
$contenido = fread($recurso, 10000); //contenido limitado a
//10000-1 caracteres
echo $contenido;
}
fclose($recurso);
?>
Da como resultado:
"Hola!" "Seora ESTEFANIA."
Observe que las cadenas "Hola!" y "Seora ESTEFANIA." estn en la misma lnea, ya que el salto de lnea del
archivo de texto no corresponde al salto de lnea HTML ().
La funcin fwrite() permite escribir en un archivo. Toma como parmetros el recurso y una cadena de
caracteres que se va a insertar en el archivo.
Por ejemplo:
Da como resultado en el archivo archivo.txt:
Hola Seora LUNA.
Si escribe:
?>
No cambia nada. El archivo va a contener siempre Hola Seora LUNA.
Si quiere escribir Hola en una lnea y Seora LUNA en otra, debe insertar un salto de lnea despus de Hola. El salto
de lnea en formato texto es: \r\n. Se escribe con la constante PHP_EOL en PHP.
Por tanto:
Da como resultado en el archivo archivo.txt:
Hola
Seora LUNA.
Si ahora quiere aadir texto, abra el archivo en modo aadir.
Por ejemplo:
Da como resultado en el archivo archivo.txt:
Hola
Seora LUNA. Adis.
La funcin rewind() permite colocar el cursor al principio del archivo. Esto tiene el efecto de volver a
escribir sobre el texto existente.
Por ejemplo:
Da como resultado en el archivo archivo.txt:
Hasta pronto Seora LUNA.
La cadena de caracteres "Adis" se sustituye por la cadena de caracteres "Hasta pronto", ya que la funcin rewind() va a colocar el cursor de escritura al principio del archivo antes de escribir "Hasta pronto".
Tenga en cuenta que los caracteres que se han escrito sustituyen a aquellos que ya estn presentes.
La funcin fputs() permite escribir una lnea en un archivo. Toma como parmetros el recurs