• No se han encontrado resultados

PHP: Funciones y librerías

N/A
N/A
Protected

Academic year: 2021

Share "PHP: Funciones y librerías"

Copied!
37
0
0

Texto completo

(1)

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

(2)

Cadenas de texto

El proceso de creaci´on de p´ aginas Web usando PHP requiere generar las cadenas de texto que forman el c´ odigo HTML Continuamente estamos trabajando con cadenas de texto Para construir cadenas de texto a partir de valores de variables PHP podemos utilizar " como delimitador,

consiguiendo la expansi´on de cualquier variable que se incluya dentro de la cadena

Si la variable$nombrealmacena el nombre de un usuario de mi p´agina 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 permitan

(3)

Cadenas de texto

La funci´on strlen()

Sintaxis: strlen(str) Argumentos: Una cadenastr

Resultado: Devuelve la longitud de la cadenastr

La funci´on trim()

Sintaxis: trim(str)

Argumentos: Una cadenastr

Resultado: Devuelve una cadena como la del argumentostr pero eliminando el espacio en blanco (espacios, tabuladores, ...) del comienzo y del final

Notas:

Esta funci´on no modifica la cadena original

Existen las funcionesltrimyrtrimque eliminan el espacio en blanco s´olo del comienzo y s´olo del final, respectivamente

(4)

Cadenas de texto

La funci´on strtoupper()

Sintaxis: strtoupper(str) Argumentos: Una cadenastr

Resultado: Una cadena de texto como la del argumentostr pero en may´usculas

La funci´on strtolower()

Sintaxis: strtolower(str) Argumentos: Una cadenastr

Resultado: Una cadena de texto como la del argumentostr pero en min´usculas

Nota: Estas funciones no modifican la cadena original

(5)

Comparaciones de cadenas

Para comparar cadenas de texto se pueden utilizar los operadores == y ===

El operador==devuelveTRUEsi las cadenas que se comparan son iguales

Si las cadenas est´an formadas exclusivamente por n´umeros entonces PHP realiza una comparaci´on de tipo num´erico La comparaci´on"001" == "1"devuelveTRUE

El operador===devuelveTRUEsi las cadenas que se comparan son identicas

Si las cadenas est´an formadas exclusivamente por n´umeros entonces PHP NO realiza una comparaci´on de tipo num´erico La comparaci´on"001" === "1"devuelveFALSE

(6)

Comparaciones de cadenas

Otra forma de comparar cadenas es con la funci´on strcmp()

Sintaxis: strcmp(str1,str2)

Argumentos: Dos cadenasstr1ystr2

Resultado: Devuelve0si ambas cadenas son iguales, un n´umero negativo sistr1es lexicogr´aficamente menor que str2y un n´umero positivo si str1es lexicogr´aficamente mayor questr2

Nota: Esta funci´on distingue entre may´usculas y min´usculas.

Si queremos comparar cadenas sin tenerlas en cuenta, debemos usar la funci´onstrcasecmp()

(7)

Subcadenas

La funci´on substr()

Sintaxis: substr(str,ini,tam)

Argumentos: Una cadenastr, una posici´oniniy un tama˜no tam

Resultado: Devuelve la subcadena destrdesde la posici´on indicada poriniy del tama˜no indicado portam

Notas:

Las posiciones en las cadenas empiezan a contar desde 0 Siinies positivo indica una posici´on contada desde el principio destr, si es negativo indica una posici´on contada desde el final destr

El argumentotames opcional, si no se indica entonces la funci´on devuelve la subcadena desde la posici´on indicada por inihasta el final

Sitames negativo indica que hay que eliminar ese n´umero de caracteres del final de la subcadena obtenida como si dicho argumento no existiera

(8)

Subcadenas

Ejemplos

La instrucci´on substr(’abcdef’, 2, 3)devuelve la subcadena desde la posici´on 2 (’c’) y de tama˜no 3: cde La instrucci´onsubstr(’abcdef’,-2)devuelve la subcadena desde la posici´on -2 (’e’) hasta el final: ef

La instrucci´onsubstr(’abcdef’,-2, 1)devuelve la subcadena desde la posici´on -2 (’e’) y de tama˜no 1: e La instrucci´onsubstr(’abcdef’, 1,-2)devuelve la

subcadena desde la posici´on 1 (’b’) hasta 2 caracteres antes de llegar al final: bcd

La instrucci´on substr(’abcdef’,-4,-2)devuelve la subcadena desde la posici´on -4 (’c’) hasta 2 caracteres antes de llegar al final: cd

(9)

Subcadenas

La funci´on strpos()

Sintaxis: strpos(str1,str2,ini)

Argumentos: Dos cadenasstr1ystr2y una posici´onini Resultado: Devuelve la posici´on de la primera ocurrencia de la cadenastr2en str1desde la posici´onini

Nota: El argumentoinies opcional y su valor por defecto es 0

La funci´on strstr()

Sintaxis: strstr(str1,str2)

Argumentos: Dos cadenasstr1ystr2

Resultado: Devuelve la subcadena que comienza en la posici´on de la primera ocurrencia de la cadenastr2enstr1

Nota: Ambas funciones distinguen entre may´ usculas y

min´ usculas

(10)

Conversi´ on entre cadenas y arrays

La funci´on explode()

Sintaxis: explode(str1,str2,tam)

Argumentos: Dos cadenasstr1ystr2y un tama˜notam Resultado: Devuelve el array asociativo cuyos valores son los trozos de la cadenastr2delimitados porstr1, hasta un total detamtrozos

Notas:

El argumentotames opcional y si no se indica se obtendr´an todos los trozos posibles

Si se indica el argumentotamentonces el ´ultimo trozo contendr´a el resto de la cadenastr2

(11)

Conversi´ on entre cadenas y arrays

La funci´on implode()

Sintaxis: implode(str,array)

Argumentos: Una cadenastry un arrayarray Resultado: Devuelve la cadena formada por los valores almacenados en el array asociativoarrayconcatenados usando la cadenastrcomo delimitador entre ellos Notas:

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

No se muestran las claves del array

(12)

Arrays asociativos

Los arrays en PHP disponen de un puntero que se˜ nala al elemento actual

Inicialmente dicho puntero se˜ nala al primer elemento insertado en el array

Este puntero sirve para acceder a la informaci´on del array con

las funciones current(), key(), reset(), end(), next(),

prev() y each()

(13)

Recorriendo arrays asociativos

La funci´on current()

Sintaxis: current(array)

Argumentos: Un array asociativoarray

Resultado: Devuelve el valor del elemento actual en elarray

La funci´on key()

Sintaxis: key(array)

Argumentos: Un array asociativoarray

Resultado: Devuelve la clave del elemento actual en elarray

(14)

Recorriendo arrays asociativos

La funci´on reset()

Sintaxis: reset(array)

Argumentos: Un array asociativoarray

Resultado: Mueve el puntero al primer elemento delarrayy devuelve el valor de dicho elemento

La funci´on end()

Sintaxis: end(array)

Argumentos: Un array asociativoarray

Resultado: Mueve el puntero al ´ultimo elemento delarrayy devuelve el valor de dicho elemento

(15)

Recorriendo arrays asociativos

La funci´on next()

Sintaxis: next(array)

Argumentos: Un array asociativoarray

Resultado: Avanza una posici´on el puntero asociado aarrayy devuelve el valor de dicho elemento

Nota: Si el puntero se encuentra al final del array, entonces devuelveFALSEy no avanza

La funci´on prev()

Sintaxis: prev(array)

Argumentos: Un array asociativoarray

Resultado: Retrocede una posici´on el puntero asociado a arrayy devuelve el valor de dicho elemento

Nota: Si el puntero se encuentra al principio del array, entonces devuelveFALSEy no retrocede

(16)

Recorriendo arrays asociativos

Recorriendo arrays asociativos

<?php

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

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

?>

(17)

Recorriendo arrays asociativos

La funci´on each()

Sintaxis: each(array)

Argumentos: Un array asociativoarray

Resultado: Devuelve un array con la clave del elemento actual enarrayen las posiciones0y’key’y su valor en las posiciones1y’value’

Nota: Esta funci´on avanza una posici´on el puntero asociado al array

(18)

Recorriendo arrays asociativos

Recorriendo arrays asociativos

<?php

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

end($a); // => 5

print_r(each($a)); /*

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

?>

(19)

Ordenando arrays asociativos

La funci´on sort()

Sintaxis: sort(array)

Argumentos: Un array asociativoarray

Resultado: Ordena elarraypor contenido en orden ascendente

La funci´on rsort()

Sintaxis: rsort(array)

Argumentos: Un array asociativoarray

Resultado: Ordena elarraypor contenido en orden descendente

Nota: Estas funciones crean nuevas claves en el array para

almacenar el resultado, eliminando todas las claves anteriores

(20)

Ordenando arrays asociativos

La funci´on ksort()

Sintaxis: ksort(array)

Argumentos: Un array asociativoarray

Resultado: Ordena elarraypor clave en orden ascendente

La funci´on rksort()

Sintaxis: rksort(array)

Argumentos: Un array asociativoarray

Resultado: Ordena elarraypor clave en orden descendente

(21)

Serializaci´ on de arrays

Un array asociativo puede tener una estructura compleja que dificulta su almacenamiento en ficheros o bases de datos La serializaci´on es un proceso que transforma estructuras complejas en cadenas de texto con objeto de almacenarlas o transferirlas con comodidad

El proceso de serializaci´on se puede revertir para recuperar la estructura original

En PHP podemos aplicar el proceso de serializaci´on a los

arrays asociativos para obtener una representaci´on compacta

en forma de cadena

(22)

Serializaci´ on de arrays

La funci´on serialize()

Sintaxis: serialize(array)

Argumentos: Un array asociativoarray

Resultado: La representaci´on compacta en forma de cadena delarray

La funci´on unserialize()

Sintaxis: unserialize(str)

Argumentos: Un cadena de textostrobtenida en una serializaci´on

Resultado: El array asociativo representado de forma compacta enstr

(23)

Serializaci´ on de arrays

Serializaci´ on 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 ) */

?>

(24)

Otras funciones

La funci´on count()

Sintaxis: count(array)

Argumentos: Un array asociativoarray

Resultado: Devuelve el n´umero de elementos delarray

La funci´on in array()

Sintaxis: in array(val)

Argumentos: Un dato cualquieraval

Resultado: DevuelveTRUEsi el datovales un valor en el array

Nota: La comparaci´on distingue entre may´usculas y min´usculas

La funci´on shuffle()

Sintaxis: shuffle(array)

Argumentos: Un array asociativoarray

(25)

Tablas de datos

PHP tiene conectividad con gran cantidad de sistemas de gesti´ on de bases de datos externas, pero tambi´en tiene funcionalidades internas para trabajar con tablas de datos (DBA)

Una tabla de datos es un fichero con una colecci´on organizada de informaci´on a la que se accede a trav´es de una clave Para poder utilizar tablas de datos en PHP, este debe disponer de un gestor de tablas de datos

Los gestores de tablas de datos disponibles se pueden consultar con la instrucci´ondba handlers(true)

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

(26)

Tablas de datos

El primer paso para trabajar con tablas de datos es crear o abrir una, para ello utilizamos la funci´on dba open()

Sintaxis: dba open(fichero,modo,gestor)

Argumentos: Tres cadenas de textofichero,modoygestor Resultado: Devuelve el identificador del recurso asociado a la tabla de datosfichero, abierta en el modo indicado enmodo con el gestor cuyo identificador esgestor

Nota: Elmodoindica el uso que se puede hacer de la tabla de datos, puede ser

rpara acceso de lectura wacceso de lectura y escritura

cpara creaci´on y acceso de lectura y escritura

npara creaci´on, truncado y acceso de lectura y escritura

(27)

Tablas de datos

Cuando se abre una tabla de datos, por defecto ´esta queda bloqueada para que no se pueda volver a abrir mientras la tenemos en uso

La tabla de datos se desbloquea en cuanto se cierra con la funci´on dba close()

Sintaxis: dba close(recurso)

Argumentos: Elrecursoasociado a una tabla de datos, devuelto por una instrucci´on de apertura de dicha tabla de datos

Resultado: Cierra la tabla de datos asegurando que todas las operaciones sobre esta ya han terminado

(28)

Tablas de datos

En las tablas de datos se puede almacenar informaci´on asociada a claves

Tanto claves como informaci´on son cadenas de texto Las claves usualmente han de ser ´unicas

Para asociar distintos tipos de informaci´on a una misma clave hay que representar de forma compacta toda la informaci´on en una ´unica cadena de texto (serializar)

Para a˜ nadir informaci´on a una tabla usamos la funci´on dba insert

Sintaxis: dba insert(clave,valor,recurso)

Argumentos: Dos cadenas de textoclaveyvalory un recursoasociado a una tabla de datos

Resultado: Inserta en la tabla de datos asociada alrecurso una entrada correspondiente a laclavecon elvalor

(29)

Tablas de datos

La funci´on dba delete()

Sintaxis: dba delete(clave,recurso)

Argumentos: Una cadena de textoclavey un recurso asociado a una tabla de datos

Resultado: Elimina de la tabla de datos asociada alrecurso la entrada correspondiente a laclave

Nota: Si laclaveno tiene valor en elrecursoasociado a una tabla de datos, entonces no hace nada

La funci´on dba replace()

Sintaxis: dba replace(clave,valor,recurso) Argumentos: Dos cadenas de textoclaveyvalory un recursoasociado a una tabla de datos

Resultado: Reemplaza en la tabla de datos asociada al recurso, la entrada correspondiente a la clave, por el valor Nota: Si laclaveno tiene un valor en elrecursoasociado a una tabla de datos, entonces funciona comodba insert()

(30)

Tablas de datos

Modificando la tabla de datos

<?php

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

// Insertamos un registro

dba_insert("75438323W","Francisco Mart´ın Mateos",$db);

// Modificamos un registro

dba_replace("75438323W","Francisco J. Mart´ın Mateos",$db);

// Modificamos un registro que no existe

dba_replace("75438323R","Francisco J. Mart´ın Mateos",$db);

// Insertamos otro registro

dba_insert("12345678O","Juan Con Miedo",$db);

// Borramos el registro dba_delete("12345678O",$db);

// Insertamos otro registro

dba_insert("12345678O","Juan Sin Miedo",$db);

// Borramos un registro que no existe dba_delete("12345678Q",$db);

// Cerramos la base de datos

(31)

Tablas de datos

La funci´on dba exists()

Sintaxis: dba exists(clave,recurso)

Argumentos: Una cadena de textoclavey un recurso asociado a una tabla de datos

Resultado: Comprueba si en la tabla de datos asociada al recurso, hay una entrada correspondiente a laclave

La funci´on dba fetch()

Sintaxis: dba fetch(clave,recurso)

Argumentos: Una cadena de textoclavey un recurso asociado a una tabla de datos

Resultado: Devuelve la entrada correspondiente a laclaveen la tabla de datos asociada alrecurso

Nota: Si laclaveno tiene un valor en elrecursoasociado a una tabla de datos, entonces devuelveFALSE

(32)

Tablas de datos

La funci´on dba firstkey()

Sintaxis: dba firstkey(recurso)

Argumentos: Unrecursoasociado a una tabla de datos Resultado: Devuelve la primera clave de la tabla de datos asociada alrecursoy establece un apuntador interno en la tabla en esta entrada

La funci´on dba nextkey()

Sintaxis: dba nextkey(recurso)

Argumentos: Unrecursoasociado a una tabla de datos Resultado: Devuelve la siguiente clave de la tabla de datos asociada alrecursoy avanza una posici´on el apuntador interno

(33)

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>";

?>

(34)

Tablas de datos

La funci´on dba sync()

Sintaxis: dba sync(recurso)

Argumentos: Unrecursoasociado a una tabla de datos Resultado: Sincroniza la tabla de datos asociada alrecurso:

escribe en el fichero asociado todos los cambios pendientes de realizar

La funci´on dba optimize()

Sintaxis: dba optimize(recurso)

Argumentos: Unrecursoasociado a una tabla de datos Resultado: Optimiza la tabla de datos asociada alrecurso:

modifica el fichero asociado mejorando la forma en que la tabla de datos est´a almacenada

(35)

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 datos

if (isset($_POST[boton]) && $_POST[boton] == "borrar") {

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

dba_close($db);

}

// Insertar una entrada en la base de datos if (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);

}

(36)

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>

(37)

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>

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

quiero también a Liseo porque en mi alma hay lugar para amar a cuantos veo... tiene mi gusto sujeto, 320 sin que pueda la razón,.. ni mande

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Pero la realidad se impone por encima de todo; la misma Isidora es consciente del cambio: «Yo misma conozco que soy otra, porque cuando perdí la idea que me hacía ser señora, me

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Por PEDRO A. EUROPEIZACIÓN DEL DERECHO PRIVADO. Re- laciones entre el Derecho privado y el ordenamiento comunitario. Ca- racterización del Derecho privado comunitario. A) Mecanismos

‘En clave de LA’ se presenta como un medio de comunicación digital de carácter cultural, enfocado a la música y las mujeres en la música valenciana.. Además de las caras