Taller > PHP > Manejo de archivos
Leer Archivos en PHP
En PHP, existen varias funciones que permiten leer archivos de diferentes maneras según el caso de uso. Ya sea que necesites leer una línea completa, un solo carácter o un archivo en formato binario, PHP proporciona herramientas flexibles y eficientes para trabajar con archivos.
En este artículo, exploraremos en detalle algunas de las funciones más útiles para leer archivos: fgets(), fgetc(), fread(), y fscanf(). Veremos ejemplos prácticos para cada una de estas funciones, que te permitirán implementar la lectura de archivos en tus proyectos.
Tabla de contenidos La función fgets() Ejemplo 1: Leer una línea de un archivo Ejemplo 2: Leer todo el archivo línea por línea La función fgetc() Ejemplo 1: Leer un carácter de un archivo Ejemplo 2: Leer el archivo carácter por carácter La función fread() Ejemplo 1: Leer un archivo completo Ejemplo 2: Leer un archivo binario La función fscanf() Ejemplo: Leer datos estructurados de un archivo Conclusión
La función fgets()
La función fgets() se utiliza para leer una línea de un archivo abierto. El comportamiento por defecto de fgets() es detenerse cuando encuentra una nueva línea (\n), ha leído el número especificado de bytes o alcanza el final del archivo.
Sintaxis:
fgets(resource $stream, ?int $length = null): string|false
$stream: Un puntero al archivo abierto con fopen().
$length: Número opcional de bytes a leer.
Ejemplo 1: Leer una línea de un archivo
<?php
$archivo = fopen("mi_archivo.txt", "r");
if ($archivo) {
$linea = fgets($archivo);
echo $linea;
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fgets($archivo): Lee la primera línea del archivo.
fclose($archivo): Cierra el archivo después de la lectura.
Ejemplo 2: Leer todo el archivo línea por línea
Si deseas leer todo el archivo línea por línea, puedes utilizar un bucle y la función feof() para detectar el final del archivo.
<?php
$archivo = fopen("mi_archivo.txt", "r");
if ($archivo) {
while (!feof($archivo)) {
echo fgets($archivo) . "<br>";
}
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
feof($archivo): Verifica si se ha alcanzado el final del archivo.
Este código imprime todas las líneas del archivo con saltos de línea HTML.
La función fgetc()
La función fgetc() lee un solo carácter del archivo cada vez. Esto es útil cuando deseas procesar un archivo carácter por carácter.
Sintaxis:
fgetc(resource $stream): string|false
Ejemplo 1: Leer un carácter de un archivo
<?php
$archivo = fopen("mi_archivo.txt", "r");
if ($archivo) {
$caracter = fgetc($archivo);
echo $caracter;
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fgetc($archivo): Lee el primer carácter del archivo.
Ejemplo 2: Leer el archivo carácter por carácter
Puedes utilizar fgetc() dentro de un bucle para leer el archivo completo carácter a carácter.
<?php
$archivo = fopen("mi_archivo.txt", "r");
if ($archivo) {
while (!feof($archivo)) {
$caracter = fgetc($archivo);
if ($caracter == "\n") {
echo "<br>";
} else {
echo $caracter;
}
}
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
Este ejemplo lee el archivo carácter por carácter y añade un salto de línea HTML cada vez que encuentra un salto de línea en el archivo.
La función fread()
La función fread() se utiliza para leer un número específico de bytes de un archivo. Es particularmente útil cuando trabajas con archivos binarios.
Sintaxis:
fread(resource $stream, int $length): string|false
Ejemplo 1: Leer un archivo completo
<?php
$archivo = "mi_archivo.txt";
$fp = fopen($archivo, "r");
if ($fp) {
$contenido = fread($fp, filesize($archivo));
echo $contenido;
fclose($fp);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fread($fp, filesize($archivo)): Lee todo el contenido del archivo basado en su tamaño total.
Ejemplo 2: Leer un archivo binario
La función fread() también se puede utilizar para leer archivos binarios, como imágenes.
<?php
$archivo = "imagen.png";
$fp = fopen($archivo, "rb");
if ($fp) {
$contenido = fread($fp, filesize($archivo));
var_dump($contenido);
fclose($fp);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fopen($archivo, "rb"): Abre el archivo en modo de lectura binaria.
fread(): Lee el archivo completo y utiliza var_dump() para mostrar el contenido binario.
La función fscanf()
La función fscanf() se utiliza para leer y formatear los datos de un archivo de manera estructurada. Similar a scanf() en C, permite extraer valores específicos según un formato predefinido.
Sintaxis:
fscanf(resource $stream, string $format, mixed &...$vars): array|int|false|null
Ejemplo: Leer datos estructurados de un archivo
<?php
$archivo = fopen("empleados.txt", "r");
if ($archivo) {
while ($info = fscanf($archivo, "%s\t%s\t%d\n")) {
list($nombre, $email, $salario) = $info;
echo "Nombre: $nombre, Email: $email, Salario: $salario
";
}
fclose($archivo);
} else {
echo "No se pudo abrir el archivo.";
}
?>
Explicación:
fscanf($archivo, "%s\t%s\t%d\n"): Lee una línea del archivo y extrae los valores como nombre, email y salario.
list(): Asigna los valores extraídos a las variables correspondientes.
Conclusión
En PHP, tienes a tu disposición una variedad de funciones para leer archivos de manera eficiente. Dependiendo de tus necesidades, puedes utilizar fgets() para leer líneas, fgetc() para leer caracteres, fread() para leer archivos completos o binarios, y fscanf() para leer datos estructurados. El manejo adecuado de estas funciones te permitirá trabajar con archivos de manera efectiva en tus aplicaciones.