Foros del Web » Programando para Internet » PHP »

Manera correcta de manejar archivos TXT

Estas en el tema de Manera correcta de manejar archivos TXT en el foro de PHP en Foros del Web. Bueno estoy armando un proyecto para la escuela y necesito hacer algo simple pero con el codigo lo mas logico posible y bien usado. Necesito ...
  #1 (permalink)  
Antiguo 26/09/2010, 14:17
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Manera correcta de manejar archivos TXT

Bueno estoy armando un proyecto para la escuela y necesito hacer algo simple pero con el codigo lo mas logico posible y bien usado. Necesito tomar datos de unos archivos TXT y despues de modificarlos grabarlos en un nuevo archivo.

El tema es que vi en diferentes lugares que usan fopen () y fclose() y en otros usan file() . No se si es lo mismo usar cualquiera o si alguno de los dos esta obsoleto o tiene desventajas.

Ademas quisiera saber como tomar todo lo que se encuentre en el archivo y asignarlo a una variable para que me quede una cadena de texto. Yo habia hecho $x = fopen("archivo.txt", "r"); pero me devuelve Resource ID#5 y no lo que tiene el archivo.

Si saben de algun buen tutorial qeu explique esto les agradeceria.

Saludos.
  #2 (permalink)  
Antiguo 26/09/2010, 14:35
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Manera correcta de manejar archivos TXT

Hola aguila, este código:
Código PHP:
fopen("archivo.txt""r"); 
devuelve un puntero de lectura, por eso al hacer echo te da ResourceID.

Para leer el contenido de un archivo a un string

Código PHP:
$string file_get_contents("el-archivo.txt"); 
A partir de aquí, se trabaja la cadena normalmente.
Después se puede utilizar file_put_contents() que mete el string en un archivo.

Respecto del manejo de ficheros, o utilizas las funciones nativas, o bien implementas una classe.
Las funciones nativas son fáciles de usar, primero define el pseudocódigo del programa o postea un ejemplo a ver si te podemos ayudar más, un saludo
  #3 (permalink)  
Antiguo 26/09/2010, 14:37
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: Manera correcta de manejar archivos TXT

Hola, bueno siempre tienes la opción de ir a la excelente documentación de php (http://www.php.net), algunas cosas que aclarar:

- fopen: devuelve un resource, no te va a entregar el archivo directamente para lectura, si eso es lo que quieres hacer, debes escribir algo como esto (sacado de la documentación de php.net):

Código PHP:
<?php
// poner el contenido de una archivo en una cadena
$nombre_archivo "algo.txt";
$gestor fopen($nombre_archivo"r");
$contenido fread($gestorfilesize($nombre_archivo));
fclose($gestor);
?>
Ahora, hay una forma mas fácil de leer un archivo completo en una cadena, es utilizando la función file_get_contents (http://www.php.net/manual/es/functio...t-contents.php), se haría algo así:

Código PHP:
<?php
$archivo 
file_get_contents('hola.txt');
echo 
$archivo;
?>
La función file() lo que hace es algo similar a file_get_contents con la diferencia que file() devuelve el contenido a un array mientras que file_get_contents lo devuelve a una cadena, si usas file debes luego recorrer ese array con algún bucle como foreach.

Para referencia te dejo los enlaces de la documentación de php:

- file()
- file_get_contents
- fread()

Saludos!

Última edición por darkmasterr; 26/09/2010 a las 14:38 Razón: error al colocar etiquetas de codigo
  #4 (permalink)  
Antiguo 26/09/2010, 15:37
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Manera correcta de manejar archivos TXT

Gracias a ambos. Para escribir use fputs y con eso le agregue los datos.

File_get_contents es el que seguramente usare.

Les comento lo que tengo que hacer a ver si les parece bien como lo estoy armando. Lo que tengo que hacer es un corrector ortografico, me dan dos archivos, uno escrito mal y otro con las palabras bien escritas. Asique tengo en un TXT un texto por ej:
Avia una bes un mono. Ezte mono no savia havlar. Y en otro TXT tengo pares de palabras separados por un espacio, asi:

Avia habia bes vez etc...

Yo lo que hice fue armar un array asociativo tomando los datos de los pares de palabras, y despues dividi el texto mal escrito cada vez que habia un espacio, despues con un bucle for recorro todo el array para que se fije si la palabra coincide con una de las que estan en el array asociativo la reemplaza, de lo contrario la agrega a una variable tal como esta.

Despues un problema que tuve fue que al dividir el texto por los espacios si tenia una , o . sin un espacio se me separaba la palabra con esto incluido por ej en el texto que les di de ejemplo me quedaria:
havlar. y si comprueba si en el array asociativo se encuentra esto me da negativo ya que en el array se encuentra havlar para esto volvi a hacer un bucle for antes de analizar el texto para que recorra el texto y si encuentra algun caracter especial le haga un espacio, y despues tengo que hacer ootro bucle para quitarle los espacios cuadno ya esta el texto corregido. Esto me parece que puede haber otra forma mas sencilla pero no se me ocurre como hacerlo, tienen alguna idea?

Saludos y gracias deneuvo.
  #5 (permalink)  
Antiguo 26/09/2010, 16:28
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Manera correcta de manejar archivos TXT

Otra duda, al usar File_get_contents es necesario hacer algo mas como con el fopen que luego hay que hacerle fclose? o es simplemente llamarlo?
  #6 (permalink)  
Antiguo 26/09/2010, 16:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Manera correcta de manejar archivos TXT

Te recomiendo que pases por los enlaces que te indicaron, ahí te explican más detallado.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 26/09/2010, 16:46
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Manera correcta de manejar archivos TXT

Cita:
Iniciado por abimaelrc Ver Mensaje
Te recomiendo que pases por los enlaces que te indicaron, ahí te explican más detallado.
Ya los estuve chequeando y no dice nada de hacerle un close por lo que intuyo que no se hara. Con respecto al resto te parece que esta bien desarrollada la idea?

La manera en que separe los caracteres espciales con un espacio que es lo que mas dudas tengo sobre si existe una manera mas simple fue la siguiente:

Código PHP:
Ver original
  1. $texto = "avia una bez, un monito.";
  2. $caracteresEspecial = array(",",".",":","!","?","¡","¿");
  3. for ($i=0;$i<7;$i++){
  4.     $texto = explode ($caracteresEspecial[$i],$texto);
  5.     $texto = implode (" $caracteresEspecial[$i]",$texto);
  6.    
  7. }
  #8 (permalink)  
Antiguo 26/09/2010, 17:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Manera correcta de manejar archivos TXT

Puedes usar preg_split para ello.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 26/09/2010, 17:16
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Manera correcta de manejar archivos TXT

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes usar preg_split para ello.
El tema es que no entiendo del todo como funciona esta funcion.
Este es el ej. de la web php.net:
Código PHP:
Ver original
  1. <?php
  2. // divide la frase mediante cualquier número de comas o caracteres espacio,
  3. // lo que incluye " ", \r, \t, \n y \f
  4. $claves = preg_split("/[\s,]+/", "lenguaje de programación, hipertexto");
  5. ?>

Y no entiendo como se arma lo primero dentro de los parentesis del preg_split. Tiene alguna manera de hacerlo o son terminos ya definidos?

Etiquetas: manejar, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:08.