php: funciones y librer´ıas - cs.us.es · php: funciones y librer´ıas francisco j. mart´ın...

37
PHP: Funciones y librer´ ıas Francisco J. Mart´ ın Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla Metodolog´ ıa de la Programaci´ on PHP: Funciones y librer´ ıas

Upload: hadat

Post on 11-Nov-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

PHP: Funciones y librerıas

Francisco J. Martın MateosCarmen Graciani Diaz

Dpto. Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

Metodologıa de la Programacion PHP: Funciones y librerıas

Cadenas de texto

El proceso de creacion de paginas Web usando PHP requieregenerar las cadenas de texto que forman el codigo HTML

Continuamente estamos trabajando con cadenas de texto

Para construir cadenas de texto a partir de valores devariables PHP podemos utilizar " como delimitador,consiguiendo la expansion de cualquier variable que se incluyadentro de la cadena

Si la variable $nombre almacena el nombre de un usuario demi pagina Web, entonces la cadena de texto PHP:"Hola $nombre, bienvenido a mi Web"

generarıa el resultado:Hola Francisco, bienvenido a mi Web

Igualmente podemos necesitar otras funciones que permitantrabajar con cadenas

Metodologıa de la Programacion PHP: Funciones y librerıas

Cadenas de texto

La funcion strlen()

Sintaxis: strlen(str)Argumentos: Una cadena str

Resultado: Devuelve la longitud de la cadena str

La funcion trim()

Sintaxis: trim(str)Argumentos: Una cadena str

Resultado: Devuelve una cadena como la del argumento str

pero eliminando el espacio en blanco (espacios, tabuladores,...) del comienzo y del finalNotas:

Esta funcion no modifica la cadena original

Existen las funciones ltrim y rtrim que eliminan el espacio

en blanco solo del comienzo y solo del final, respectivamente

Metodologıa de la Programacion PHP: Funciones y librerıas

Cadenas de texto

La funcion strtoupper()

Sintaxis: strtoupper(str)Argumentos: Una cadena str

Resultado: Una cadena de texto como la del argumento str

pero en mayusculas

La funcion strtolower()

Sintaxis: strtolower(str)Argumentos: Una cadena str

Resultado: Una cadena de texto como la del argumento str

pero en minusculas

Nota: Estas funciones no modifican la cadena original

Metodologıa de la Programacion PHP: Funciones y librerıas

Comparaciones de cadenas

Para comparar cadenas de texto se pueden utilizar losoperadores == y ===

El operador == devuelve TRUE si las cadenas que se comparanson iguales

Si las cadenas estan formadas exclusivamente por numeros

entonces PHP realiza una comparacion de tipo numerico

La comparacion "001" == "1" devuelve TRUE

El operador === devuelve TRUE si las cadenas que se comparanson identicas

Si las cadenas estan formadas exclusivamente por numeros

entonces PHP NO realiza una comparacion de tipo numerico

La comparacion "001" === "1" devuelve FALSE

Metodologıa de la Programacion PHP: Funciones y librerıas

Comparaciones de cadenas

Otra forma de comparar cadenas es con la funcion strcmp()

Sintaxis: strcmp(str1,str2)Argumentos: Dos cadenas str1 y str2

Resultado: Devuelve 0 si ambas cadenas son iguales, unnumero negativo si str1 es lexicograficamente menor questr2 y un numero positivo si str1 es lexicograficamentemayor que str2

Nota: Esta funcion distingue entre mayusculas y minusculas.Si queremos comparar cadenas sin tenerlas en cuenta, debemosusar la funcion strcasecmp()

Metodologıa de la Programacion PHP: Funciones y librerıas

Subcadenas

La funcion substr()

Sintaxis: substr(str,ini,tam)Argumentos: Una cadena str, una posicion ini y un tamanotam

Resultado: Devuelve la subcadena de str desde la posicionindicada por ini y del tamano indicado por tamNotas:

Las posiciones en las cadenas empiezan a contar desde 0

Si ini es positivo indica una posicion contada desde el

principio de str, si es negativo indica una posicion contada

desde el final de str

El argumento tam es opcional, si no se indica entonces la

funcion devuelve la subcadena desde la posicion indicada por

ini hasta el final

Si tam es negativo indica que hay que eliminar ese numero de

caracteres del final de la subcadena obtenida como si dicho

argumento no existiera

Metodologıa de la Programacion PHP: Funciones y librerıas

Subcadenas

Ejemplos

La instruccion substr(’abcdef’, 2, 3) devuelve lasubcadena desde la posicion 2 (’c’) y de tamano 3: cdeLa instruccion substr(’abcdef’,-2) devuelve la subcadenadesde la posicion -2 (’e’) hasta el final: efLa instruccion substr(’abcdef’,-2, 1) devuelve lasubcadena desde la posicion -2 (’e’) y de tamano 1: eLa instruccion substr(’abcdef’, 1,-2) devuelve lasubcadena desde la posicion 1 (’b’) hasta 2 caracteres antes dellegar al final: bcdLa instruccion substr(’abcdef’,-4,-2) devuelve lasubcadena desde la posicion -4 (’c’) hasta 2 caracteres antesde llegar al final: cd

Metodologıa de la Programacion PHP: Funciones y librerıas

Subcadenas

La funcion strpos()

Sintaxis: strpos(str1,str2,ini)Argumentos: Dos cadenas str1 y str2 y una posicion ini

Resultado: Devuelve la posicion de la primera ocurrencia de lacadena str2 en str1 desde la posicion ini

Nota: El argumento ini es opcional y su valor por defecto es 0

La funcion strstr()

Sintaxis: strstr(str1,str2)Argumentos: Dos cadenas str1 y str2

Resultado: Devuelve la subcadena que comienza en la posicionde la primera ocurrencia de la cadena str2 en str1

Nota: Ambas funciones distinguen entre mayusculas yminusculas

Metodologıa de la Programacion PHP: Funciones y librerıas

Conversion entre cadenas y arrays

La funcion explode()

Sintaxis: explode(str1,str2,tam)Argumentos: Dos cadenas str1 y str2 y un tamano tam

Resultado: Devuelve el array asociativo cuyos valores son lostrozos de la cadena str2 delimitados por str1, hasta un totalde tam trozosNotas:

El argumento tam es opcional y si no se indica se obtendran

todos los trozos posibles

Si se indica el argumento tam entonces el ultimo trozo

contendra el resto de la cadena str2

Metodologıa de la Programacion PHP: Funciones y librerıas

Conversion entre cadenas y arrays

La funcion implode()

Sintaxis: implode(str,array)Argumentos: Una cadena str y un array array

Resultado: Devuelve la cadena formada por los valoresalmacenados en el array asociativo array concatenadosusando la cadena str como delimitador entre ellosNotas:

Los valores del array se concatenan en el orden en que se

crearon

No se muestran las claves del array

Metodologıa de la Programacion PHP: Funciones y librerıas

Arrays asociativos

Los arrays en PHP disponen de un puntero que senala alelemento actual

Inicialmente dicho puntero senala al primer elemento insertadoen el array

Este puntero sirve para acceder a la informacion del array conlas funciones current(), key(), reset(), end(), next(),prev() y each()

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

La funcion current()

Sintaxis: current(array)Argumentos: Un array asociativo array

Resultado: Devuelve el valor del elemento actual en el array

La funcion key()

Sintaxis: key(array)Argumentos: Un array asociativo array

Resultado: Devuelve la clave del elemento actual en el array

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

La funcion reset()

Sintaxis: reset(array)Argumentos: Un array asociativo array

Resultado: Mueve el puntero al primer elemento del array ydevuelve el valor de dicho elemento

La funcion end()

Sintaxis: end(array)Argumentos: Un array asociativo array

Resultado: Mueve el puntero al ultimo elemento del array ydevuelve el valor de dicho elemento

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

La funcion next()

Sintaxis: next(array)Argumentos: Un array asociativo array

Resultado: Avanza una posicion el puntero asociado a array ydevuelve el valor de dicho elementoNota: Si el puntero se encuentra al final del array, entoncesdevuelve FALSE y no avanza

La funcion prev()

Sintaxis: prev(array)Argumentos: Un array asociativo array

Resultado: Retrocede una posicion el puntero asociado aarray y devuelve el valor de dicho elementoNota: Si el puntero se encuentra al principio del array,entonces devuelve FALSE y no retrocede

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

Recorriendo arrays asociativos

<?php$a = array(1,2,’hola’ => 3, 5 => 4, ’adios’ => 5);

current($a); // => 1key($a); // => 0next($a); // => 2current($a); // => 2key($a); // => 1end($a); // => 5key($a); // => adiosprev($a); // => 4current($a); // => 4reset($a); // => 1?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

La funcion each()

Sintaxis: each(array)Argumentos: Un array asociativo array

Resultado: Devuelve un array con la clave del elemento actualen array en las posiciones 0 y ’key’ y su valor en lasposiciones 1 y ’value’

Nota: Esta funcion avanza una posicion el puntero asociado alarray

Metodologıa de la Programacion PHP: Funciones y librerıas

Recorriendo arrays asociativos

Recorriendo arrays asociativos

<?php$a = array(1,2,’hola’ => 3, 5 => 4, ’adios’ => 5);

end($a); // => 5print_r(each($a)); / *

=> Array ( [1] => 5[value] => 5[0] => adios[key] => adios ) * /

?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Ordenando arrays asociativos

La funcion sort()

Sintaxis: sort(array)Argumentos: Un array asociativo array

Resultado: Ordena el array por contenido en ordenascendente

La funcion rsort()

Sintaxis: rsort(array)Argumentos: Un array asociativo array

Resultado: Ordena el array por contenido en ordendescendente

Nota: Estas funciones crean nuevas claves en el array paraalmacenar el resultado, eliminando todas las claves anteriores

Metodologıa de la Programacion PHP: Funciones y librerıas

Ordenando arrays asociativos

La funcion ksort()

Sintaxis: ksort(array)Argumentos: Un array asociativo array

Resultado: Ordena el array por clave en orden ascendente

La funcion rksort()

Sintaxis: rksort(array)Argumentos: Un array asociativo array

Resultado: Ordena el array por clave en orden descendente

Metodologıa de la Programacion PHP: Funciones y librerıas

Serializacion de arrays

Un array asociativo puede tener una estructura compleja quedificulta su almacenamiento en ficheros o bases de datos

La serializacion es un proceso que transforma estructurascomplejas en cadenas de texto con objeto de almacenarlas otransferirlas con comodidad

El proceso de serializacion se puede revertir para recuperar laestructura original

En PHP podemos aplicar el proceso de serializacion a losarrays asociativos para obtener una representacion compactaen forma de cadena

Metodologıa de la Programacion PHP: Funciones y librerıas

Serializacion de arrays

La funcion serialize()

Sintaxis: serialize(array)Argumentos: Un array asociativo array

Resultado: La representacion compacta en forma de cadenadel array

La funcion unserialize()

Sintaxis: unserialize(str)Argumentos: Un cadena de texto str obtenida en unaserializacionResultado: El array asociativo representado de forma compactaen str

Metodologıa de la Programacion PHP: Funciones y librerıas

Serializacion de arrays

Serializacion de arrays asociativos

<?php$a = array(1,2 => ’hola’,’tres’ => 3);/ * => Array ( [0] => 1

[2] => hola[tres] => 3 ) * /

$b = serialize($a);/ * => a:3:i:0;i:1;i:2;s:4:"hola";s:4:"tres";i:3; * /

$c = unserialize($b);/ * => Array ( [0] => 1

[2] => hola[tres] => 3 ) * /

?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Otras funciones

La funcion count()

Sintaxis: count(array)Argumentos: Un array asociativo array

Resultado: Devuelve el numero de elementos del array

La funcion in array()

Sintaxis: in array(val)

Argumentos: Un dato cualquiera val

Resultado: Devuelve TRUE si el dato val es un valor en elarray

Nota: La comparacion distingue entre mayusculas y minusculas

La funcion shuffle()

Sintaxis: shuffle(array)Argumentos: Un array asociativo array

Resultado: Mezcla de forma aleatoria el contenido del array

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

PHP tiene conectividad con gran cantidad de sistemas degestion de bases de datos externas, pero tambien tienefuncionalidades internas para trabajar con tablas de datos(DBA)

Una tabla de datos es un fichero con una coleccion organizadade informacion a la que se accede a traves de una clave

Para poder utilizar tablas de datos en PHP, este debedisponer de un gestor de tablas de datos

Los gestores de tablas de datos disponibles se pueden consultarcon la instruccion dba handlers(true)

En lo que sigue utilizaremos el gestor de tablas de datos DB4(Berkeley DB 4)

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

El primer paso para trabajar con tablas de datos es crear oabrir una, para ello utilizamos la funcion dba open()

Sintaxis: dba open(fichero,modo,gestor)

Argumentos: Tres cadenas de texto fichero, modo y gestor

Resultado: Devuelve el identificador del recurso asociado a latabla de datos fichero, abierta en el modo indicado en modo

con el gestor cuyo identificador es gestorNota: El modo indica el uso que se puede hacer de la tabla dedatos, puede ser

r para acceso de lectura

w acceso de lectura y escritura

c para creacion y acceso de lectura y escritura

n para creacion, truncado y acceso de lectura y escritura

Nota: El identificador del gestor de tablas de datos DB4 es db4

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

Cuando se abre una tabla de datos, por defecto esta quedabloqueada para que no se pueda volver a abrir mientras latenemos en uso

La tabla de datos se desbloquea en cuanto se cierra con lafuncion dba close()

Sintaxis: dba close(recurso)

Argumentos: El recurso asociado a una tabla de datos,devuelto por una instruccion de apertura de dicha tabla dedatosResultado: Cierra la tabla de datos asegurando que todas lasoperaciones sobre esta ya han terminado

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

En las tablas de datos se puede almacenar informacionasociada a claves

Tanto claves como informacion son cadenas de textoLas claves usualmente han de ser unicasPara asociar distintos tipos de informacion a una misma clavehay que representar de forma compacta toda la informacion enuna unica cadena de texto (serializar)

Para anadir informacion a una tabla usamos la funciondba insert

Sintaxis: dba insert(clave,valor,recurso)

Argumentos: Dos cadenas de texto clave y valor y unrecurso asociado a una tabla de datosResultado: Inserta en la tabla de datos asociada al recursouna entrada correspondiente a la clave con el valorNota: Si la clave tiene un valor en el recurso asociado a unatabla de datos, entonces no hace nada

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

La funcion dba delete()

Sintaxis: dba delete(clave,recurso)

Argumentos: Una cadena de texto clave y un recurso

asociado a una tabla de datosResultado: Elimina de la tabla de datos asociada al recursola entrada correspondiente a la clave

Nota: Si la clave no tiene valor en el recurso asociado a unatabla de datos, entonces no hace nada

La funcion dba replace()

Sintaxis: dba replace(clave,valor,recurso)

Argumentos: Dos cadenas de texto clave y valor y unrecurso asociado a una tabla de datosResultado: Reemplaza en la tabla de datos asociada alrecurso, la entrada correspondiente a la clave, por el valorNota: Si la clave no tiene un valor en el recurso asociado auna tabla de datos, entonces funciona como dba insert()

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

Modificando la tabla de datos<?php$db = dba_open("nombres.db","n","db4");// Insertamos un registrodba_insert("75438323W","Francisco Mart´ın Mateos",$db );// Modificamos un registrodba_replace("75438323W","Francisco J. Mart´ın Mateos", $db);// Modificamos un registro que no existedba_replace("75438323R","Francisco J. Mart´ın Mateos", $db);// Insertamos otro registrodba_insert("12345678O","Juan Con Miedo",$db);// Borramos el registrodba_delete("12345678O",$db);// Insertamos otro registrodba_insert("12345678O","Juan Sin Miedo",$db);// Borramos un registro que no existedba_delete("12345678Q",$db);// Cerramos la base de datosdba_close($db);?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

La funcion dba exists()

Sintaxis: dba exists(clave,recurso)

Argumentos: Una cadena de texto clave y un recurso

asociado a una tabla de datosResultado: Comprueba si en la tabla de datos asociada alrecurso, hay una entrada correspondiente a la clave

La funcion dba fetch()

Sintaxis: dba fetch(clave,recurso)

Argumentos: Una cadena de texto clave y un recurso

asociado a una tabla de datosResultado: Devuelve la entrada correspondiente a la clave enla tabla de datos asociada al recursoNota: Si la clave no tiene un valor en el recurso asociado auna tabla de datos, entonces devuelve FALSE

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

La funcion dba firstkey()

Sintaxis: dba firstkey(recurso)

Argumentos: Un recurso asociado a una tabla de datosResultado: Devuelve la primera clave de la tabla de datosasociada al recurso y establece un apuntador interno en latabla en esta entrada

La funcion dba nextkey()

Sintaxis: dba nextkey(recurso)

Argumentos: Un recurso asociado a una tabla de datosResultado: Devuelve la siguiente clave de la tabla de datosasociada al recurso y avanza una posicion el apuntadorinterno

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

Consultando la tabla de datos<?php$db = dba_open("nombres.db","r","db4");echo "Contenido de la base de datos:<BR>";echo "<OL>";$key = dba_firstkey($db);while ($key) {

echo "<LI>Clave: $key Valor:";echo dba_fetch($key, $db);echo "<BR>";$key = dba_nextkey($db);

}echo "</OL>";?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Tablas de datos

La funcion dba sync()

Sintaxis: dba sync(recurso)

Argumentos: Un recurso asociado a una tabla de datosResultado: Sincroniza la tabla de datos asociada al recurso:escribe en el fichero asociado todos los cambios pendientes derealizar

La funcion dba optimize()

Sintaxis: dba optimize(recurso)

Argumentos: Un recurso asociado a una tabla de datosResultado: Optimiza la tabla de datos asociada al recurso:modifica el fichero asociado mejorando la forma en que latabla de datos esta almacenada

Metodologıa de la Programacion PHP: Funciones y librerıas

Ejemplo: registro de usuarios

Registro de usuarios: base-de-datos.php<HTML><HEAD>

<TITLE>Base de datos de usuarios</TITLE></HEAD>

<?php// Borrar la tabla de datosif (isset($_POST[boton]) && $_POST[boton] == "borrar") {

$db = dba_open("nombres.db","n","db4");dba_close($db);

}

// Insertar una entrada en la base de datosif (isset($_POST[dni]) &&

isset($_POST[nombre]) &&isset($_POST[apellidos])) {

$db = dba_open("nombres.db","c","db4");$a = array(nombre => $_POST[nombre],

apellidos => $_POST[apellidos]);dba_insert($_POST[dni],serialize($a),$db);dba_close($db);

}?>

Metodologıa de la Programacion PHP: Funciones y librerıas

Ejemplo: registro de usuarios

Registro de usuarios: base-de-datos.php

<BODY><H1>Base de datos de usuarios</H1>

<FORM action="base-de-datos.php"method="post">

Nombre: <INPUT type="text" name="nombre"> <BR>Apellidos: <INPUT type="text" name="apellidos"> <BR>DNI: <INPUT type="text" name="dni"> <BR><INPUT type="submit" name="boton" value="datos">

</FORM>

Metodologıa de la Programacion PHP: Funciones y librerıas

Ejemplo: registro de usuarios

Registro de usuarios: base-de-datos.php

<H1>Contenido de la base de datos</H1>

<?php$db = dba_open("nombres.db","r","db4");echo "<OL>";$key = dba_firstkey($db);while ($key) {

echo "<LI>Clave: $key<BR>";$b = unserialize(dba_fetch($key, $db));echo "Nombre: $b[nombre]<BR>";echo "Apellidos: $b[apellidos]<BR>";$key = dba_nextkey($db);

}echo "</OL>";?>

<FORM action="base-de-datos.php"method="post">

<INPUT type="submit" name="boton" value="borrar"></FORM>

</BODY></HTML>

Metodologıa de la Programacion PHP: Funciones y librerıas