Você está na página 1de 37

PHP: Funciones y librerı́as

Francisco J. Martı́n Mateos


Carmen Graciani Diaz

Dpto. Ciencias de la Computación e Inteligencia Artificial


Universidad de Sevilla

Metodologı́a de la Programación PHP: Funciones y librerı́as


Cadenas de texto

El proceso de creación de páginas Web usando PHP requiere


generar las cadenas de texto que forman el código 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ón de cualquier variable que se incluya
dentro de la cadena
Si la variable $nombre almacena el nombre de un usuario de
mi página 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
trabajar con cadenas

Metodologı́a de la Programación PHP: Funciones y librerı́as


Cadenas de texto

La función strlen()
Sintaxis: strlen(str)
Argumentos: Una cadena str
Resultado: Devuelve la longitud de la cadena str
La función 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 final
Notas:
Esta función no modifica la cadena original
Existen las funciones ltrim y rtrim que eliminan el espacio
en blanco sólo del comienzo y sólo del final, respectivamente

Metodologı́a de la Programación PHP: Funciones y librerı́as


Cadenas de texto

La función strtoupper()
Sintaxis: strtoupper(str)
Argumentos: Una cadena str
Resultado: Una cadena de texto como la del argumento str
pero en mayúsculas
La función strtolower()
Sintaxis: strtolower(str)
Argumentos: Una cadena str
Resultado: Una cadena de texto como la del argumento str
pero en minúsculas
Nota: Estas funciones no modifican la cadena original

Metodologı́a de la Programación PHP: Funciones y librerı́as


Comparaciones de cadenas

Para comparar cadenas de texto se pueden utilizar los


operadores == y ===
El operador == devuelve TRUE si las cadenas que se comparan
son iguales
Si las cadenas están formadas exclusivamente por números
entonces PHP realiza una comparación de tipo numérico
La comparación "001" == "1" devuelve TRUE
El operador === devuelve TRUE si las cadenas que se comparan
son identicas
Si las cadenas están formadas exclusivamente por números
entonces PHP NO realiza una comparación de tipo numérico
La comparación "001" === "1" devuelve FALSE

Metodologı́a de la Programación PHP: Funciones y librerı́as


Comparaciones de cadenas

Otra forma de comparar cadenas es con la función strcmp()


Sintaxis: strcmp(str1,str2)
Argumentos: Dos cadenas str1 y str2
Resultado: Devuelve 0 si ambas cadenas son iguales, un
número negativo si str1 es lexicográficamente menor que
str2 y un número positivo si str1 es lexicográficamente
mayor que str2
Nota: Esta función distingue entre mayúsculas y minúsculas.
Si queremos comparar cadenas sin tenerlas en cuenta, debemos
usar la función strcasecmp()

Metodologı́a de la Programación PHP: Funciones y librerı́as


Subcadenas

La función substr()
Sintaxis: substr(str,ini,tam)
Argumentos: Una cadena str, una posición ini y un tamaño
tam
Resultado: Devuelve la subcadena de str desde la posición
indicada por ini y del tamaño indicado por tam
Notas:
Las posiciones en las cadenas empiezan a contar desde 0
Si ini es positivo indica una posición contada desde el
principio de str, si es negativo indica una posición contada
desde el final de str
El argumento tam es opcional, si no se indica entonces la
función devuelve la subcadena desde la posición indicada por
ini hasta el final
Si tam es negativo indica que hay que eliminar ese número de
caracteres del final de la subcadena obtenida como si dicho
argumento no existiera

Metodologı́a de la Programación PHP: Funciones y librerı́as


Subcadenas

Ejemplos
La instrucción substr(’abcdef’, 2, 3) devuelve la
subcadena desde la posición 2 (’c’) y de tamaño 3: cde
La instrucción substr(’abcdef’,-2) devuelve la subcadena
desde la posición -2 (’e’) hasta el final: ef
La instrucción substr(’abcdef’,-2, 1) devuelve la
subcadena desde la posición -2 (’e’) y de tamaño 1: e
La instrucción substr(’abcdef’, 1,-2) devuelve la
subcadena desde la posición 1 (’b’) hasta 2 caracteres antes de
llegar al final: bcd
La instrucción substr(’abcdef’,-4,-2) devuelve la
subcadena desde la posición -4 (’c’) hasta 2 caracteres antes
de llegar al final: cd

Metodologı́a de la Programación PHP: Funciones y librerı́as


Subcadenas

La función strpos()
Sintaxis: strpos(str1,str2,ini)
Argumentos: Dos cadenas str1 y str2 y una posición ini
Resultado: Devuelve la posición de la primera ocurrencia de la
cadena str2 en str1 desde la posición ini
Nota: El argumento ini es opcional y su valor por defecto es 0
La función strstr()
Sintaxis: strstr(str1,str2)
Argumentos: Dos cadenas str1 y str2
Resultado: Devuelve la subcadena que comienza en la posición
de la primera ocurrencia de la cadena str2 en str1
Nota: Ambas funciones distinguen entre mayúsculas y
minúsculas

Metodologı́a de la Programación PHP: Funciones y librerı́as


Conversión entre cadenas y arrays

La función explode()
Sintaxis: explode(str1,str2,tam)
Argumentos: Dos cadenas str1 y str2 y un tamaño tam
Resultado: Devuelve el array asociativo cuyos valores son los
trozos de la cadena str2 delimitados por str1, hasta un total
de tam trozos
Notas:
El argumento tam es opcional y si no se indica se obtendrán
todos los trozos posibles
Si se indica el argumento tam entonces el último trozo
contendrá el resto de la cadena str2

Metodologı́a de la Programación PHP: Funciones y librerı́as


Conversión entre cadenas y arrays

La función implode()
Sintaxis: implode(str,array)
Argumentos: Una cadena str y un array array
Resultado: Devuelve la cadena formada por los valores
almacenados en el array asociativo array concatenados
usando la cadena str como delimitador entre ellos
Notas:
Los valores del array se concatenan en el orden en que se
crearon
No se muestran las claves del array

Metodologı́a de la Programación PHP: Funciones y librerı́as


Arrays asociativos

Los arrays en PHP disponen de un puntero que señala al


elemento actual
Inicialmente dicho puntero señala al primer elemento insertado
en el array
Este puntero sirve para acceder a la información del array con
las funciones current(), key(), reset(), end(), next(),
prev() y each()

Metodologı́a de la Programación PHP: Funciones y librerı́as


Recorriendo arrays asociativos

La función current()
Sintaxis: current(array)
Argumentos: Un array asociativo array
Resultado: Devuelve el valor del elemento actual en el array
La función key()
Sintaxis: key(array)
Argumentos: Un array asociativo array
Resultado: Devuelve la clave del elemento actual en el array

Metodologı́a de la Programación PHP: Funciones y librerı́as


Recorriendo arrays asociativos

La función reset()
Sintaxis: reset(array)
Argumentos: Un array asociativo array
Resultado: Mueve el puntero al primer elemento del array y
devuelve el valor de dicho elemento
La función end()
Sintaxis: end(array)
Argumentos: Un array asociativo array
Resultado: Mueve el puntero al último elemento del array y
devuelve el valor de dicho elemento

Metodologı́a de la Programación PHP: Funciones y librerı́as


Recorriendo arrays asociativos

La función next()
Sintaxis: next(array)
Argumentos: Un array asociativo array
Resultado: Avanza una posición el puntero asociado a array y
devuelve el valor de dicho elemento
Nota: Si el puntero se encuentra al final del array, entonces
devuelve FALSE y no avanza
La función prev()
Sintaxis: prev(array)
Argumentos: Un array asociativo array
Resultado: Retrocede una posición el puntero asociado a
array y devuelve el valor de dicho elemento
Nota: Si el puntero se encuentra al principio del array,
entonces devuelve FALSE y no retrocede

Metodologı́a de la Programación PHP: Funciones y librerı́as


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
?>

Metodologı́a de la Programación PHP: Funciones y librerı́as


Recorriendo arrays asociativos

La función each()
Sintaxis: each(array)
Argumentos: Un array asociativo array
Resultado: Devuelve un array con la clave del elemento actual
en array en las posiciones 0 y ’key’ y su valor en las
posiciones 1 y ’value’
Nota: Esta función avanza una posición el puntero asociado al
array

Metodologı́a de la Programación PHP: Funciones y librerı́as


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 ) */
?>

Metodologı́a de la Programación PHP: Funciones y librerı́as


Ordenando arrays asociativos

La función sort()
Sintaxis: sort(array)
Argumentos: Un array asociativo array
Resultado: Ordena el array por contenido en orden
ascendente
La función rsort()
Sintaxis: rsort(array)
Argumentos: Un array asociativo array
Resultado: Ordena el array por contenido en orden
descendente
Nota: Estas funciones crean nuevas claves en el array para
almacenar el resultado, eliminando todas las claves anteriores

Metodologı́a de la Programación PHP: Funciones y librerı́as


Ordenando arrays asociativos

La función ksort()
Sintaxis: ksort(array)
Argumentos: Un array asociativo array
Resultado: Ordena el array por clave en orden ascendente
La función rksort()
Sintaxis: rksort(array)
Argumentos: Un array asociativo array
Resultado: Ordena el array por clave en orden descendente

Metodologı́a de la Programación PHP: Funciones y librerı́as


Serialización de arrays

Un array asociativo puede tener una estructura compleja que


dificulta su almacenamiento en ficheros o bases de datos
La serialización es un proceso que transforma estructuras
complejas en cadenas de texto con objeto de almacenarlas o
transferirlas con comodidad
El proceso de serialización se puede revertir para recuperar la
estructura original
En PHP podemos aplicar el proceso de serialización a los
arrays asociativos para obtener una representación compacta
en forma de cadena

Metodologı́a de la Programación PHP: Funciones y librerı́as


Serialización de arrays

La función serialize()
Sintaxis: serialize(array)
Argumentos: Un array asociativo array
Resultado: La representación compacta en forma de cadena
del array
La función unserialize()
Sintaxis: unserialize(str)
Argumentos: Un cadena de texto str obtenida en una
serialización
Resultado: El array asociativo representado de forma compacta
en str

Metodologı́a de la Programación PHP: Funciones y librerı́as


Serialización de arrays

Serialización 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 Programación PHP: Funciones y librerı́as


Otras funciones

La función count()
Sintaxis: count(array)
Argumentos: Un array asociativo array
Resultado: Devuelve el número de elementos del array
La función in array()
Sintaxis: in array(val)
Argumentos: Un dato cualquiera val
Resultado: Devuelve TRUE si el dato val es un valor en el
array
Nota: La comparación distingue entre mayúsculas y minúsculas
La función shuffle()
Sintaxis: shuffle(array)
Argumentos: Un array asociativo array
Resultado: Mezcla de forma aleatoria el contenido del array

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

PHP tiene conectividad con gran cantidad de sistemas de


gestión de bases de datos externas, pero también tiene
funcionalidades internas para trabajar con tablas de datos
(DBA)
Una tabla de datos es un fichero con una colección organizada
de información a la que se accede a través 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ón dba handlers(true)
En lo que sigue utilizaremos el gestor de tablas de datos DB4
(Berkeley DB 4)

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

El primer paso para trabajar con tablas de datos es crear o


abrir una, para ello utilizamos la función 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 la
tabla de datos fichero, abierta en el modo indicado en modo
con el gestor cuyo identificador es gestor
Nota: El modo indica el uso que se puede hacer de la tabla de
datos, puede ser
r para acceso de lectura
w acceso de lectura y escritura
c para creación y acceso de lectura y escritura
n para creación, truncado y acceso de lectura y escritura
Nota: El identificador del gestor de tablas de datos DB4 es db4

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

Cuando se abre una tabla de datos, por defecto ésta 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ón dba close()
Sintaxis: dba close(recurso)
Argumentos: El recurso asociado a una tabla de datos,
devuelto por una instrucción de apertura de dicha tabla de
datos
Resultado: Cierra la tabla de datos asegurando que todas las
operaciones sobre esta ya han terminado

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

En las tablas de datos se puede almacenar información


asociada a claves
Tanto claves como información son cadenas de texto
Las claves usualmente han de ser únicas
Para asociar distintos tipos de información a una misma clave
hay que representar de forma compacta toda la información en
una única cadena de texto (serializar)
Para añadir información a una tabla usamos la función
dba insert
Sintaxis: dba insert(clave,valor,recurso)
Argumentos: Dos cadenas de texto clave y valor y un
recurso asociado a una tabla de datos
Resultado: Inserta en la tabla de datos asociada al recurso
una entrada correspondiente a la clave con el valor
Nota: Si la clave tiene un valor en el recurso asociado a una
tabla de datos, entonces no hace nada

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

La función dba delete()


Sintaxis: dba delete(clave,recurso)
Argumentos: Una cadena de texto clave y un recurso
asociado a una tabla de datos
Resultado: Elimina de la tabla de datos asociada al recurso
la entrada correspondiente a la clave
Nota: Si la clave no tiene valor en el recurso asociado a una
tabla de datos, entonces no hace nada
La función dba replace()
Sintaxis: dba replace(clave,valor,recurso)
Argumentos: Dos cadenas de texto clave y valor y un
recurso asociado 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 la clave no tiene un valor en el recurso asociado a
una tabla de datos, entonces funciona como dba insert()

Metodologı́a de la Programación PHP: Funciones y librerı́as


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
dba_close($db);
?>

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

La función dba exists()


Sintaxis: dba exists(clave,recurso)
Argumentos: Una cadena de texto clave y un recurso
asociado a una tabla de datos
Resultado: Comprueba si en la tabla de datos asociada al
recurso, hay una entrada correspondiente a la clave
La función dba fetch()
Sintaxis: dba fetch(clave,recurso)
Argumentos: Una cadena de texto clave y un recurso
asociado a una tabla de datos
Resultado: Devuelve la entrada correspondiente a la clave en
la tabla de datos asociada al recurso
Nota: Si la clave no tiene un valor en el recurso asociado a
una tabla de datos, entonces devuelve FALSE

Metodologı́a de la Programación PHP: Funciones y librerı́as


Tablas de datos

La función dba firstkey()


Sintaxis: dba firstkey(recurso)
Argumentos: Un recurso asociado a una tabla de datos
Resultado: Devuelve la primera clave de la tabla de datos
asociada al recurso y establece un apuntador interno en la
tabla en esta entrada
La función dba nextkey()
Sintaxis: dba nextkey(recurso)
Argumentos: Un recurso asociado a una tabla de datos
Resultado: Devuelve la siguiente clave de la tabla de datos
asociada al recurso y avanza una posición el apuntador
interno

Metodologı́a de la Programación 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 Programación PHP: Funciones y librerı́as


Tablas de datos

La función dba sync()


Sintaxis: dba sync(recurso)
Argumentos: Un recurso asociado a una tabla de datos
Resultado: Sincroniza la tabla de datos asociada al recurso:
escribe en el fichero asociado todos los cambios pendientes de
realizar
La función dba optimize()
Sintaxis: dba optimize(recurso)
Argumentos: Un recurso asociado a una tabla de datos
Resultado: Optimiza la tabla de datos asociada al recurso:
modifica el fichero asociado mejorando la forma en que la
tabla de datos está almacenada

Metodologı́a de la Programación 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 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);
}
?>

Metodologı́a de la Programación 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 Programación 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 Programación PHP: Funciones y librerı́as

Você também pode gostar