En este sencillo taller de PHP vamos a mostrar cómo se puede leer un archivo de principio a fin con PHP. Cuando nos referimos a un archivo, de manera general nos referirnos a streams (flujos) de texto, que se puedan acceder a través de las funciones PHP para manejo de archivos, como el contenido de texto de un fichero de texto que haya en el sistema de archivos del servidor o el flujo de texto que podemos obtener al acceder a una URL con PHP, de cualquier servidor web.
Cabe recordar antes de empezar que en DesarrolloWeb.com se han publicado en el pasado diversos artículos sobre este tema, que contienen interesantes informaciones para poder seguir este taller de PHP. Si deseas obtener una base, debes leer pues el manual sobre trabajo con archivos en PHP.
Generalmente, cuando queremos leer el contenido de un flujo de texto, queremos obtener todo el contenido del fichero o la URL, por lo que puede ser útil mostrar un par de sencillos scripts que pueden darnos la facilidad de obtener el contenido completo del archivo, sin preocuparnos por su longitud. Esto lo vamos a ver ahora de manera que quede al alcance de cualquier desarrollador sin demasiada experiencia en el lenguaje de programación PHP.
Leer el contenido de un fichero de texto completo con PHP
Empecemos viendo el caso de un archivo de texto, que tiene algunas diferencias y mayor facilidad en comparación con la lectura del contenido de una URL. A ser sinceros, la lectura de estos archivos de texto por medio de PHP se realiza utilizando tan solo funciones existentes en PHP, por lo que nuestra aportación es más bien poca.
Existe una función fopen() que sirve para abrir el archivo de texto, desde su localización en el sistema de ficheros del servidor. Luego utilizamos fread() para leer el contenido del fichero. Pero el detalle más crucial es que fread() necesita la longitud en bytes a leer y, como nosotros en principio no conocemos cuál es la longitud del fichero, utilizamos la función de PHP filesize() que nos devuelve este dato.
Veamos pues la función PHP que podremos utilizar para leer el contenido de un fichero cuyo nombre se recibe por parámetro.
function leer_fichero_completo($nombre_fichero){
//abrimos el archivo de texto y obtenemos el identificador
$fichero_texto = fopen ($nombre_fichero, "r");
//obtenemos de una sola vez todo el contenido del fichero
//OJO! Debido a filesize(), sólo funcionará con archivos de texto
$contenido_fichero = fread($fichero_texto, filesize($nombre_fichero));
return $contenido_fichero;
}
//abrimos el archivo de texto y obtenemos el identificador
$fichero_texto = fopen ($nombre_fichero, "r");
//obtenemos de una sola vez todo el contenido del fichero
//OJO! Debido a filesize(), sólo funcionará con archivos de texto
$contenido_fichero = fread($fichero_texto, filesize($nombre_fichero));
return $contenido_fichero;
}
Leer el contenido de una URL con PHP
De manera similar a como podemos leer un fichero con PHP, podemos leer el contenido de una URL de cualquier página web, en cualquier servidor de Internet. Es decir, en vez de utilizar un flujo de texto que viene de un archivo de texto del servidor, utilizamos el flujo de texto que nos devuelve un servidor web al solicitar una página, es decir, obtener el código HTML completo que el servidor devuelve cuando se le solicita una URL.
Nuevamente debemos admitir que este script no tiene realmente mucha dificultad ni resulta muy especial. Hasta quizás muchos de vosotros lo habréis utilizado, este u otro similar. El detalle es que, por lo menos que yo sepa, no podemos obtener el tamaño del fichero, en bytes, de una URL enviada por un servidor web, por lo que no podremos utilizar la función filesize() que tanto nos facilitaba las cosas anteriormente. Pero la solución pasa por leer cualquier bloque de datos y continuar leyendo en un bucle hasta que el flujo de texto se termine.
function leer_contenido_completo($url){
//abrimos el fichero, puede ser de texto o una URL
$fichero_url = fopen ($url, "r");
$texto = "";
//bucle para ir recibiendo todo el contenido del fichero en bloques de 1024 bytes
while ($trozo = fgets($fichero_url, 1024)){
$texto .= $trozo;
}
return $texto;
}
//abrimos el fichero, puede ser de texto o una URL
$fichero_url = fopen ($url, "r");
$texto = "";
//bucle para ir recibiendo todo el contenido del fichero en bloques de 1024 bytes
while ($trozo = fgets($fichero_url, 1024)){
$texto .= $trozo;
}
return $texto;
}
Como se puede ver, se recibe un parámetro con la URL que se desea leer, aunque la función también valdría para leer archivos de texto del servidor en caso que especifiquemos el nombre de un fichero. Luego hacemos un blucle while en el que vamos leyendo bloques de 1024 bytes y los vamos metiendo en una variable hasta que no quede contenido en el flujo de texto por leer.
Fuente:enlace
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve para más información
No hay comentarios:
Publicar un comentario