¡Hola Chicos! ¡Bienvenidos a una nueva clase del Taller de PHP! Hoy vamos a ver un poco de manejo de archivos, más que nada la lectura y creación de un txt. Cómo abrirlo con la función fopen, cerrarlo con fclose o leerlo con fread.
Dejaremos para la segunda parte la escritura y borrado del mismo. Con las mismas técnicas que vamos a ver en estas clases vamos a poder manipular no sólo txt sino también html, xml, etc.
Abriendo un archivo
Para abrir un archivo tenemos que usar la función de php fopen:
fopen( "nombre_del_archivo", "modo");
Los diferentes modos que tenemos son:
- “r”: Abre el archivo para solo lectura y posiciona el puntero al principio del archivo.
- “r+”: Abre el archivo para lectura y escritura y posiciona el puntero al principio del archivo.
- “w”: Abre el archivo para escritura únicamente. Posiciona el puntero al principio del archivo y lo trunca con un largo de cero. Si el archivo no existe, intenta crearlo.
- “w+”: Abre el archivo para lectura y escritura. Posiciona el puntero al principio del archivo y lo trunca con un largo de cero. Si el archivo no existe, intenta crearlo.
- “a”: Abre el archivo para escritura únicamente pero posiciona el puntero al final del archivo. Si el archivo no existe, intenta crearlo.
- “a+”: Abre el archivo para lectura y escritura. Posiciona el puntero al final del archivo. Si no existe, intenta crearlo.
- “x”: Crea y abre para escritura únicamente el archivo. Posiciona el puntero al principio del archivo. Si el archivo ya existe, fopen() va a fallar y va a devolver un FALSE y generará un error de nivel E_WARNING. Si el archivo no existe, intenta crearlo.
- “x+”: Crea y abre para lectura y escritura. Posiciona el puntero al principio del archivo. Si el archivo ya existe, fopen() devuelve FALSE y genera un error de nivel E_WARNING. Si el archivo no existe, intenta crearlo.
Por ejemplo si queremos empezar a manipular un archivo, debemos hacer lo siguiente:
$archivo = fopen("/logs.txt","r");
De esta forma abrimos el archivo logs.txt y posicionamos el puntero en la primer lÃnea para poder comenzar a leerlo.
Cerrar Archivos
Para cerrar el archivo debemos usar fclose().
A la función fclose debemos pasarle el puntero que abrimos con fopen, de la siguiente manera:
fclose( $archivo );
De esta forma le avisamos a php que dejamos de usar el archivo (liberando memoria).
Leer un Txt
Para leer un archivo primero tenemos que abrir el puntero y luego usar la funcion fread():
fread( $puntero, $largo_del_archivo );
Un ejemplo completo serÃa:
$archivo = "/logs.txt";
$puntero = fopen( $archivo, “r” );
$contenido = fread( $puntero, filesize( $archivo ) );
fclose( $puntero );
¿Qué hicimos en nuestro script?
Primero definimos la ruta a nuestro archivo en una variable, luego abrimos ese archivo pasándole la variable con la ruta y le decimos que sea con el modo sólo lectura y con el puntero al principio del archivo.
Luego usamos fread y le pasamos el puntero y le decimos el tamaño de nuestro archivo. Guardamos todo el contenido en un string en la variable $contenido.
Y luego cerramos el puntero.
Ahora tenemos todo el contenido del archivo en la variable $contenido.
| << CLASE ANTERIOR |








Domingo, 31 de Agosto de 2008 a las 11.27
sera posible enviarme a mi correo todas las clases del taller de php. yo diseño en html. pero deseo afianzarme mucho en php. siempre estoy recibiendo los anuncios y actualizacines de wmaster.
gracias.
Sábado, 24 de Enero de 2009 a las 22.55
bueno no entiendo tanto el script de leer el archivo
Domingo, 5 de Abril de 2009 a las 22.29
Buenas tardes, necesito realizar una busqueda en un archivo y validar si esta una palabra en especial, alguien me puede ayudar con esto…
Domingo, 16 de Enero de 2011 a las 10.29
Para redondear y uniformizar el contenido, falta decir qué errores dan los modos “r” y “r+”.
Pregunta: ¿entonces, los modos “w” y “w+” son equivalentes?
Domingo, 16 de Enero de 2011 a las 10.51
Esto quizás es más consulta de HTML pero ¿cómo se declara que el juego ed caracteres utilizado en el texto de la pag es unicode UTF8 (por ej.) para que el navegador lo reproduzca correctamente y no muestre chirimolos raros para los acentos y caracteres especiales?
Domingo, 16 de Enero de 2011 a las 11.21
Esta práctica me da errores. Debe haber algún problema con las autorizaciones de acceso al archivo txt que he creado para la prueba, las rutas o algo. Lo he creado con permiso de lectura para todos los usuarios, del mimso modo que el php.
Warning: fopen(./archivo_pruebas.txt) [function.fopen]: failed to open stream: Resource temporarily unavailable in /var/www/PHP-MANIPULACION_ARCHIVOS.php on line 9
Warning: fread(): supplied argument is not a valid stream resource in /var/www/PHP-MANIPULACION_ARCHIVOS.php on line 10
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/PHP-MANIPULACION_ARCHIVOS.php on line 11
Viernes, 2 de Septiembre de 2011 a las 13.34
Bueno buscando en internet encontre un codigo similar, y que funcione correctamente (tambien arregla ese problema de salto de linea):
<?php
#ejemplode.com
$archivo = file_get_contents(”mundo.txt”); //Guardamos archivo.txt en $archivo
$archivo = ucfirst($archivo); //Le damos un poco de formato
$archivo = nl2br($archivo); //Transforma todos los saltos de linea en tag
echo $archivo;
?>
Viernes, 2 de Septiembre de 2011 a las 13.44
Eh aquà el ejemplo arreglado, espero les sirva:
<?php
$nombreArchivo = “mundo.txt”;//Nombre del Archivo txt
$archivo = fopen($nombreArchivo,”r”);//Abrimos el Archivo txt con la opcion de “Leer”
$contenido = fread($archivo,filesize($nombreArchivo));//Leemos el archivo
//fead pide 2 parametros el primero es el archivo que queremos leer y el segundo es el tamaño del archivo
//para saber el tamaño del archivo usamos la funcion filesize que retorna el tamaño del archivo en bytes
//filesize solo necesita 1 parametro del tipo “string” el cual es el nombre del archivo
$contenido = nl2br($contenido);
//ahora haciendo uso de la funcion nl2br convertirmos los saltos del tipo “\r\n” en “”
fclose($archivo);//liberamos memoria
echo $contenido;//mostramos el texto de nuestro archivo txt
?>