- Cómo crear y leer un archivo en PHP
El manejo de archivos en PHP pueden ser una forma tan válida de almacenar información como MySQL. Por ello en este post voy a mostrar cómo crear y leer un archivo en PHP. Esto puede ser muy útil para recuperar cierta información, ya que es más rápido acceder a la información de un archivo de tu disco duro.
Antes de comenzar es importante partir de que el sistema operativo que estemos trabajando es case-sensitive (diferencia minúsculas de mayúsculas). Esto nos ayuda a no tener quebraderos de cabeza a la hora de nombrar los ficheros. Hay sistemas que no son case-sensitive como Windows o Mac pero Linux y Unix sí, por tanto, es mejor partir de que diferencian las mayúsculas, de esa manera si porteas tu trabajo de Windows a un servidor Linux, no tendrás ningún problema.
Verificar que un archivo existe en php
Antes de ponernos a crear y leer un archivo en PHP, es preciso saber si existe para que no de errores. Podemos emplear la función file_exists() que devuelve un true o false:
if (file_exists(«prueba.txt»)) echo «El archivo existe»;
Cómo crear un archivo en PHP
El fichero que queremos leer, prueba.txt, no existe por tanto es preciso crear y escribir unas líneas en ella. Todo este proceso lo podemos realizar desde PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $fh = fopen("prueba.txt", 'w') or die("Se produjo un error al crear el archivo"); $texto = <<<_END Comienza con Linea 1 Linea 2 Termina con Linea 3 _END; fwrite($fh, $texto) or die("No se pudo escribir en el archivo"); fclose($fh); echo "Se ha escrito sin problemas"; ?> |
Si ejecutas este código en tu navegador, y todo ha salido bien, deberías de ver el mensaje de que se ha escrito sin problemas. De lo contrario, puede que ser que tu disco duro esté lleno (no creo) o lo más probable es que no tengas permisos para crear o escribir en el archivo, en ese caso deberías de modificar los atributos del fichero de destino que sería la carpeta donde tengas el código PHP.
La secuencia que sigue el código es la siguiente
- Siempre se empieza abriendo un archivo con la función fopen().
- A continuación, puedes usar otras funciones como fwrite para escribir o fread o fgets para leer.
- Finalizar cerrando el archivo.
Cuando abrimos un fichero en PHP es preciso almacenarlo en un recurso para poder acceder a él y manejarlo. Por ello hemos empleado la variable $fh para almacenar el valor devuelto por la función fopen. Con esa variable, pasamos como parámetro a las funciones fwrite o fclose para que puedan realizar acciones sobre el fichero. Si te preguntas que hay dentro de $fh, es un número que PHP usa para referirse a la información interna del fichero.
En caso de algún fallo, fopen devuelve false. Si la condición recibe este valor cerramos el programa (no continúa más) y se devuelve un mensaje de error. En un caso real, deberías de redirigir al usuario a una página de error pero, para este ejemplo nos vale así 😉
Habrás notado que hay un segundo parámetro en fopen (w), esto indica que el archivo abierto está para escribir. En caso de no existir el archivo, lo crea. Pero es muy importante que si el archivo ya existe, el parámetro w hace que borre el viejo contenido, aunque no escribas nada.
Parámetros de fopen
Parámetro | Acción | Descripción |
---|---|---|
r | Lee un fichero desde el principio. | Sólo abre el archivo para leer. Sitúa el cursos en el principio del archivo. Devuelve false si el archivo no existe. |
r+ | Lee el archivo desde el principio y permite la escritura. | Abre el archivo para lectura y escritura. Sitúa el puntero al principio del archivo. Devuelve false si el archivo no existe. |
w | Escribe un archivo y corta su contenido. | Se abre sólo para escribir. Sitúa el puntero al prinicpio ydeja el contenido del archivo a nada antes de escribir. Si el archivo no existe, intenta crearlo. |
w+ | Escribe un archivo desde el principio, corta su contenido, y permite la lectura. | Abre un archivo para lectura y escritura. Sitúa el puntero al principio dejando a nada el contenido del archivo. Si el archivo no existe, intenta crearlo. |
a | Se adjunta al final del archivo. | Abierto sólo en escritura, Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
a+ | Se adjunta al final del archivo y permite lectura. | Se abre el archivo para lectura y escritura. Sitúa el puntero al final del archivo. Si el archivo no existe, intenta crearlo. |
Cómo leer un archivo en PHP
La manera más sencilla de leer un archivo es obteniendo una línea entera con fgets.
1 2 3 4 5 6 7 8 9 |
<?php $fh = fopen("prueba.txt", 'r') or die("Se produjo un error al abrir el archivo"); $linea = fgets($fh); fclose($fh); echo $linea; ?> |
También cabe la posibilidad de leer líneas enteras del archivo e ir concatenando el texto con un bucle while y la función fgets
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $fh = fopen("prueba.txt", 'r') or die("Se produjo un error al abrir el archivo"); $texto = ""; //Mientras haya un línea que obtener, se concatena el contenido de la línea con la variable texto while($linea = fgets($fh)) { $texto .= $linea. "<br>"; } fclose($fh); echo $texto; ?> |
Función fread()
Si quieres obtener varias líneas o alguna porción de estas, puedes emplear la función fread
1 2 3 4 5 6 7 8 9 |
<?php $fh = fopen("prueba.txt", 'r') or die("Se produjo un error al abrir el archivo"); $texto = fread($fh, 10); fclose($fh); echo $texto; ?> |
Con esta función obtener un número de caracteres del archivo, en este caso 10.
Función file_get_contents()
Si quieres obtener el contenido entero de un archivo de una sola atacada, puedes emplear la función file_get_contents().
1 2 3 |
echo "<pre>"; // Para mostrar el contenido sin alterar, manteniendo espacios. echo file_get_contents("prueba.txt"); echo "</pre>"; // Terminates pre tag |
Sin embargo, esta función permite obtener el código HTML de una página. Por ejemplo vamos a probar con Google
1 |
echo file_get_contents("http://google.com"); |
Y hasta aquí cómo crear y leer un archivo en PHP, espero que os haya gustado. A seguir picando 🙂