php: funciones y librer´ıas - cs.us.es · php: funciones y librer´ıas francisco j. mart´ın...
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