Las operaciones de entrada/salida en PHP tienen una gran importancia en cualquier lenguaje de programación ya que no tiene sentido que un lenguaje de programación no pueda escribir, leer, actualizar datos de una base de datos, etc. En este capítulo nos centraremos básicamente en las operaciones de entrada y salida con archivos y posteriormente explicaremos las operaciones con bases de datos.
Supongamos que deseamos hacer una tienda de compra online. Imaginemos el gran esfuerzo que supondría tener que modificar todas las paginas HTML de aquellos productos en los cuales en la temporada de oferta su precio se viera afectado. La solución más primitiva para el almacenamiento de datos es un fichero de texto, el contenido del fichero de texto puede ser cualquiera.
¿Cómo abrimos un fichero?
Para abrir un fichero PHP pone a disposición una función. Su sintaxis es la siguiente:
fopen(fichero,modo); la ruta del fichero se indica en fichero, y modo determina los diferentes modos de lectura de un archivo:
Atributo | Efecto |
r | Solo lectura |
r+ | Lectura y escritura |
w | Sólo escritura. Borra el contenido anterior |
w+ | Lectura y escritura. Borra el contenido anterior. |
a | Solo escritura. Conserva el contenido anterior. |
a+ | Lectura y escritura. Conserva el contenido anterior |
La función fopen devuelve un manejador de fichero que es el que utilizaremos en las funciones relacionadas con la lectura y escritura de ficheros.
¿Cómo se recorre un fichero?
Para leer un fichero lógicamente la operación es muy sencilla. Consiste en ir leyendo todos los caracteres hasta llegar al EOF (end of file… final del archivo) el cual determina el final del texto.
Al igual que en las matrices los ficheros poseen un cursor interno que indica su posición actual con respecto a todo el texto.
Para comprobar si se ha llegado al final del archivo, PHP pone a nuestra disposición la función feof(manejador_fichero); que se encarga de comprobar si la posición actual del fichero es la marca del final.
La función mas genérica de lectura es fread(manejador_fichero,nº_bytes); que se encarga de leer un numero determinado de bytes del fichero y devolvérnoslo en una cadena de caracteres.
En cambio, si lo que pretendemos es leer el fichero caracter a caracter debemos usar la función fgetc(manejador_fichero); .
Otras de las funciones mas características son: fgets(fichero,nº bytes); que nos devuelve una cadena de caracteres con la información leída. fgetss(manejador_fichero,nº bytes,[mostrar_tags]); nos lee un fichero HTML omitiendo las etiquetas características del código, en mostrar tags debemos introducir las etiquetas que deseamos que se muestren.
Si al realizar la lectura lo que se pretenden leer los valores que siguen un determinado formato de entrada nos podemos ahorrar un gran trabajo usando la funciónfscanf(manejador_fichero,formato,variables); Esta función obtiene los datos de entrada de un fichero siguiendo un formato determinado. Posteriormente dicha información debe ser tratada por el programador.
La ultima función que vamos a estudiar para abrir ficheros es la funciónfile(nombre_fichero); con esta función no es necesario usar las funciones fopen() y fclose() ya que se ejecutan de forma implícita.
¿Cómo se cierra un fichero?
Cerrar es la ultima operación que se debe realizar al manipular un fichero y permite cerrar la referencia que se hace al fichero en el script ejecutado. Para poder cerrar un fichero usamos la función fclose(manejador_fichero);
Escritura en ficheros
Para escribir en un fichero básicamente debemos realizar tres operaciones: abrir el fichero en modo escritura, realizar la operación de escritura realizada, cerrar el fichero. Las funciones que empleamos para escribir en un fichero sonfputs(manejador_fichero,cadena); y fwrite(manejador_fichero,cadena); que nos permiten añadir una cadena de caracteres al texto anterior contenido en el texto.
Acceso directo en ficheros
Existen un conjunto de funciones que nos permiten situarnos en una determinada posición del fichero para leer a partir de ahí.
La función fseek(manejador_fichero,posicion); Nos permite empezar a leer un fichero a partir de una posición según se determine: seek_set (se toma con el principio del fichero),seek_cur (posición actual), seek_end (posición final).
Existen dos funciones básicas que nos posicionan al principio del fichero ->rewind(manejador_fichero); o que nos devuelven el valor actual de la posición->ftell(manejador_fichero);
Funciones variadas para el manejo de ficheros
fpassthru(manejador_fichero); Nos muestra el contenido referenciado por manejador de fichero. Devuelve el numero de bytes mostrados si no se produce ningún fallo.
set_file_buffer(fichero,tamaño); Determina el tamaño del buffer de ese archivo que usara PHP.
readfile(fichero); Lee un fichero y lo muestra por el método de salida estándar.
Publicar un comentario