sábado, 9 de agosto de 2014

Los archivos en PHP - 1 de 3



1. Introducción

A veces resulta muy útil almacenar información en un archivo del servidor, en lugar de en la base de datos. Puede ser más rápido y accesible; sin embargo, es menos seguro y pueden surgir errores en la escritura si hay conexiones simultáneas.

A lo largo de esta parte vamos a ver las funciones más utilizadas.

Para empezar, debe crear un archivo llamado «archivo.txt» en el directorio www, es decir, donde están sus páginas PHP. Este archivo debe tener derechos de escritura para poder escribir en ellos. Esto se produce automáticamente cuando trabaja en modo local, pero probablemente tendrá que cambiar los permisos del archivo si lo transfiere por FTP a otra ubicación.


2. Lectura rápida
  • La función file_get_contents() permite leer el contenido de un archivo y lo devuelve en una cadena de caracteres.

En el siguiente ejemplo, el archivo texto contiene la frase "¡Hola!"

<?php
$contenido = file_get_contents(archivo.txt’);
echo $contenido;
?>

Da como resultado:

"¡Hola!"

  • La función readfile() también permite leer el contenido de un archivo, pero devuelve el número de caracteres del archivo y muestra automáticamente el contenido.

En el siguiente ejemplo, el archivo de texto contiene la frase "¡Hola!"

<?php
$archivo = ’archivo.txt’;
$numero=readfile($archivo);
echo "<br /> El número de caracteres del archivo es:".$numero;
?>

Da como resultado:

"¡Hola!"
El número de caracteres del archivo es:8

  • La función file() permite leer el contenido de un archivo, pero devuelve el contenido en una tabla, línea por línea.

En este ejemplo, el archivo de texto contiene la frase "¡Hola!", un salto de línea y la frase "Señora ESTEFANIA."

<?php
$tabla = file(’archivo.txt’);
foreach ($tabla as $línea) {
echo $línea."<br />";
}
?>

Da como resultado:

"¡Hola!"
"Señora ESTEFANIA."

Cada línea del archivo se vuelve a encontrar en cada elemento de la tabla.


3. Escritura rápida

La función file_put_contents() permite escribir en un archivo el contenido de una cadena de caracteres. Toma como parámetro el nombre del archivo y la variable que contiene el texto que va a insertar en el archivo. Si ya existe el archivo, su contenido se elimina.

Por ejemplo:

<?php
$contenido = "Hola Sra. ESTEFANIA.";
file_put_contents("archivo.txt",$contenido);
?>

Escrito en el archivo llamado archivo.txt:

Hola Sra. ESTEFANIA.


4. Abrir y cerrar un archivo

La función fopen() permite desencadenar la apertura del archivo. Esta función tiene dos parámetros: el nombre del archivo y el modo de apertura del archivo.

Por ejemplo:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
?>

La variable $recurso contiene un objeto que permite manipular el archivo. Veremos más adelante cómo se utiliza.

Observe que el carácter ’r’ es el segundo parámetro.

La ’r’ abre el archivo solo en modo de lectura.
La ’r+’ abre el archivo en modo de lectura y escritura.
La ’w’ abre el archivo solo en modo de escritura, vacía el archivo y lo crea si aún no existe.
La ’w+’ abre el archivo en modo de lectura y escritura, vacía el archivo y lo crea si aún no existe.
La ’a’ abre el archivo solo en modo de escritura y además crea el archivo si aún no existe. Lo que escriba después no modificará el texto que ya existe.
La ’a+’ abre el archivo en modo de lectura y escritura y además crea el archivo que aún no existe.

  • La función fclose() permite cerrar el archivo. Esta función devuelve true o false en caso de error.

Por ejemplo:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
fclose($recurso);
?>


5. Leer y escribir

La función fgetc() permite leer el archivo carácter a carácter. Es preciso que incluya un bucle para navegar por todos los caracteres del archivo.

Por ejemplo:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
if (!$recurso) { //comprueba si el archivo está abierto correctamente
echo "Imposible abrir el archivo archivo.txt";
}
//bucle mientras haya un carácter
while (false !== ($char = fgetc($recurso))) {
echo $char;
}
fclose($recurso);
?>

Da como resultado:

"¡Hola!" "Señora ESTEFANIA."

Observe que no lee el salto de línea; por tanto esta función no es muy práctica.

  • La función fgets() permite leer el archivo línea a línea. Por tanto, es preciso incluir esta función en un bucle para navegar por todas las líneas del archivo. Toma como parámetro el recurso del archivo y el tamaño de cada línea como opción. La función recupera este número de caracteres o los caracteres hasta que se encuentra un final de línea.

Por ejemplo:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
if ($recurso) { //si el archivo se ha abierto correctamente
while (!feof($recurso)) { //mientras el final del archivo
//no se encuentre
$buffer = fgets($recurso, 4096); //4096-1 es el número
//máximo de caracteres por cada línea, es decir el tamaño
//del buffer-1
echo $buffer."<br />";
}
}
fclose($recurso);
?>

Da como resultado:

"¡Hola!"
"Señora ESTEFANIA."

La función feof() devuelve true si se encuentra al final del archivo.

Si quiere mostrar las líneas de cinco en cinco caracteres:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
if ($recurso) {
while (!feof($recurso)) { //mientras el final del archivo
//no se encuentre
$buffer = fgets($recurso, 6); //6-1 es el número máximo
//de caracteres por cada línea
echo $buffer."<br />";
}
}
fclose($recurso);
?>

Da como resultado:

"¡Hol
a!""
Señor
a EST
EFANI
A."

  • La función fread() permite leer un archivo completo y devolver su contenido en una cadena de caracteres. Toma como parámetro el recurso, y como opción, la longitud máxima en bytes.

Por ejemplo:

<?php
$recurso = fopen(’archivo.txt’, ’r’);
if ($recurso) {
$contenido = fread($recurso, 10000); //contenido limitado a
//10000-1 caracteres
echo $contenido;
}
fclose($recurso);
?>

Da como resultado:

"¡Hola!" "Señora ESTEFANIA."

Observe que las cadenas "¡Hola!" y "Señora ESTEFANIA." están en la misma línea, ya que el salto de línea del archivo de texto no corresponde al salto de línea HTML (<br />).



Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada