Justi 14 de julio de 2008 a las 13.25
   Imprimir artículo
elWebmaster.com

Taller de PHP: Manipulaci贸n de archivos (1)


Taller de PHP: Manipulaci贸n de archivos (1)隆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  

CLASE SIGUIENTE >>


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (10)

  1. RUBEN DARIO DURANGO YANES dice:

    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.

  2. elvis dice:

    bueno no entiendo tanto el script de leer el archivo

  3. JAF dice:

    Buenas tardes, necesito realizar una busqueda en un archivo y validar si esta una palabra en especial, alguien me puede ayudar con esto…

  4. Guada dice:

    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?

  5. Guada dice:

    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?

  6. Guada dice:

    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

  7. Weyne dice:

    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;
    ?>

  8. Weyne dice:

    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
    ?>

  9. RODOLFO SEALES POSADA dice:

    cordial saludo.
    Sucede que tengo una necesidad y al vez una curiosidad algo grande. Tengo una aplicacion desarrollada en GPL, que es para utilizar en una tienda de barrio y es por modulos, digamos que tiene, modulos de ventas, contabilidad, codigo de barras y otros, este puede usarse en la red o en local, PEROOOO y aqui es donde esta mi necesidad, solo puedo usarla para un solo cliente a la vez, es decir que si tengo mas tiendas, debo colocarlas en una carpeta por cada tienda, creandole un subdominio o un dominio. lo que conlleva a mas trabajo, mas uso de espacio en servidor, etc,,, Me gustaria saber como podria realizarse una multiplexacion de el codigo y que cada “negocio” o “tienda”, tenga su propia base de datos o sus datos independientes, pero que no tenga que repetir el codigo. esto lo he averiguado y al parecer lo llaman “MULTISITIOS” Pero realizado con un solo scripts. Adicionalmente a esto, me gustaria saber como puede en el momento de registrarse un administrador de un sitio, que se cree la base de datos correspondiente a el negocio que registre y quede amarrado a ese sitio, subdominio o dominio, es decir a esa “tienda o negocio”? que debo hacer?
    Mil gracias por la ayuda y orientacion.

  10. RODOLFO SEALES POSADA dice:

    perdon,,esta hecha en PHP y MySQL, el aplicativo. aclaro…

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder