6 Formas de leer archivos en PHP, con strings, array y más

by Janeth Kent Date: 22-05-2023 php curl include remote fopen getcontents

Bienvenido a un tutorial sobre cómo leer archivos en PHP. Sí, así es, ¿qué tan difícil puede ser leer archivos en PHP? Se sorprenderá... No es tan sencillo como algunos pueden pensar.

Hay varias maneras de leer archivos en PHP:

Leer el archivo en una cadena

$contents = file_get_contents("FILE");

Leer el archivo en un array
$array = file("FILE");

Usar cURL para obtener un archivo de un servidor diferente.
$curl = curl_init("http://site.com/");
curl_setopt($curl, CURLOPT_RETTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);

Abrir un flujo de archivos y leer línea por línea.
$stream = fopen("FILE", "r");
while(($line=fgets($handle))!==false) { echo $line; }
Leer y salir directamente
readfile("FILE");

Cargar directamente un archivo en el script
include "FILE"; require "FILE";

Este es un resumen rápido de los métodos comunes, pero vamos a recorrer algunos ejemplos en esta guía

1) LEER EL ARCHIVO EN UNA CADENA

1-file-to-string.php

<?php
// (A) LEER TODO EL CONTENIDO EN UNA CADENA
$text = file_get_contents('README.txt');
echo $text;
 
// (B) TAMBIÉN SE PUEDE OBTENER DE LA URL
$text = file_get_contents('https://en.wikipedia.org/wiki/Aha_ha');
echo $text;

No hay mucha ciencia de cohetes involucrada aquí, sólo tenga en cuenta que file_get_contents() puede obtener el contenido de un archivo o de una URL. Aunque esto es sencillo, tenga cuidado de no leer archivos masivos con esto... Se encontrará con un error de "memoria agotada", y posiblemente causará algunos problemas en el servidor.


2) LEER EL ARCHIVO EN UN ARRAY


2-file-to-array.php

<? php
// (A) ARCHIVO A ARRAY
$array = archivo('README.txt');
print_r($array);
 
// (B) OPCIÓN ADICIONAL - OMITIR LÍNEAS VACÍAS
$array = file('README.txt', FILE_SKIP_EMPTY_LINES);
print_r($array);

Este es otro sencillo. Pero en lugar de una cadena plana, file() leerá un array, siendo cada elemento una línea diferente. Tome nota de nuevo, no intente leer archivos grandes con esto.

3) CURL FETCH


3-curl.php

<?php
$curl = curl_init("https://en.wikipedia.org/wiki/Aha_ha");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
echo $data;

CURL son las siglas de "client URL", y en término llano "llamadas de servidor a servidor". Algunos de ustedes pueden estar pensando - ¿Qué diablos, no es esto una forma indirecta de hacer file_get_contents()? Pues no. CURL en realidad ofrece un montón de opciones y controles - Incluso puede obtener archivos de un servidor FTP. 


4) LEER EL ARCHIVO LÍNEA POR LÍNEA


4 línea por línea.php

<? php
// (A) ABRIR EL ARCHIVO
$handle = fopen("README.txt", "r") o die("¡Error al leer el archivo!");
 
// (B) LEER LÍNEA POR LÍNEA
while (($line = fgets($handle)) !== false) {
// Para gestionar mejor la memoria, también se puede especificar cuántos bytes se van a leer de una vez
// while (($line = fgets($handle, 4096)) !== false) {
  echo $línea;
}
 
// (C) CERRAR EL ARCHIVO
fclose($handle);

Los 3 métodos anteriores se encuentran con un problema de memoria cuando se trata de archivos grandes. Así que para lidiar con ese problema, podemos usar fgets() y leer línea por línea en su lugar.


5) FILE STREAM


5-file-stream.php

<? php
// (A) INICIAR EL BUFFER DE SALIDA
ob_start();
// (B) CABECERAS HTTP PARA FORZAR LA DESCARGA
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="README.txt"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize('README.txt'));
 
// (C) SALIDA DE TODAS LAS CABECERAS Y PARADA DEL BUFFERING
ob_end_flush();
 
// (D) LEER Y DAR SALIDA AL ARCHIVO DIRECTAMENTE
readfile('README.txt');
exit();

Este siguiente método es un poco diferente al resto. En lugar de leer un archivo en cadenas y arrays, lo emite directamente. Muy útil cuando se trata de forzar una descarga o transferir archivos enormes.


6) INCLUDE y REQUIRE


6-include-require.php

<!DOCTYPE HTML>
<html>
<body>
  <?php
  require "README.txt";
  ?>
</body>
</html>

 
by Janeth Kent Date: 22-05-2023 php curl include remote fopen getcontents visitas : 5743  
 
Janeth Kent

Janeth Kent

Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN AND DEVELOPMENT.

 
 
 

Artículos relacionados

Seguimiento en tiempo real de los vuelos: la API de Flight Tracker

La API de Flight Tracker brinda a los desarrolladores la capacidad de acceder al estado de los vuelos en tiempo real, lo cual resulta extremadamente útil para integrar un seguimiento…

Ejecución de funciones PHP en AWS Lambda y API Gateway

¿Qué es AWS Lambda? AWS Lambda es un servicio de procesamiento sin servidor que puede ejecutar código en respuesta a eventos o condiciones predeterminados y administrar automáticamente todos los recursos de…

Cómo enviar un correo electrónico desde un formulario de contacto HTML

En el artículo de hoy vamos a escribir sobre cómo hacer un formulario que funcione y que al pulsar ese botón de envío sea funcional y envíe el correo electrónico…

Instalar Laravel Homestead en Windows 10

Instalar Homestead Mediante Vagrant Laravel Homestead es una máquina virtual que viene ya preparada para el desarrollo de proyectos con Laravel y otras tecnologías de PHP . Al ser una máquina…

Cookies HTTP: cómo funcionan y cómo usarlas

Hoy vamos a escribir sobre la forma de almacenar datos en un navegador, por qué los sitios web utilizan cookies y cómo funcionan en detalle. Continúa leyendo para averiguar cómo implementarlas…

PHP 8.0: mas rápido que nunca con el compilador JIT

Probablemente ya habéis oido la noticia hace unos meses de que el compilador JIT será agregado a PHP 8. Ya desde PHP 7.0, se han hecho cambios para mejorar el…

Guía sencilla para convertir imágenes a WebP en PHP

El 30 de septiembre de 2010, Google anunció la publicación de un nuevo estándar abierto para la compresión con pérdida de gráficos de 24 bits en la web. La base…

Renderización lado servidor de Vue.js on Php

¿Intentas que el renderizado del lado del servidor funcione con PHP para renderizar tu aplicación Vue.js pero se atasca? Hay un montón de grandes recursos por ahí, pero hasta ahra no…

Cómo instalar Caddy Web Server con PHP-FPM en Ubuntu 16.04

El Caddy o Caddy web server es un servidor web de código abierto habilitado para HTTP/2 escrito en Go. Caddy puede funcionar en varios sistemas, incluyendo los que funcionan con…

PHP: como soluciónar el error «The e modifier is no longer supported»

Desde la versión 7 ya tenemos error al usar el modificador e con el preg_replace(). de hecho el modificador e, correspondiente a la constante PCRE PREG_REPLACE_EVAL, era antes utilizado en…

Cómo obtener el token de acceso a Instagram usando PHP

Cómo obtener el token de acceso a Instagram usando PHP? Para obtener el token de acceso Instagram, primero debes autenticar tu aplicación y luego obtener el token de acceso. Sigue los siguientes…

Optimizar las consultas SQL en PHP: Select y Join

La mayoría de nosotros tiene que relacionarse con bases de datos en nuestros proyectos, y SQL es uno de los languajes más utlizados. SQL (Structured Query Language) es un lenguaje…

Clicky