Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: usuario oculto en 25 Julio 2011, 01:49 am



Título: editar línea de archivo txt desde php
Publicado por: usuario oculto en 25 Julio 2011, 01:49 am
 Lo que quiero hacer es por ejemplo cambiar la linea de un archivo txt desde un php

Archivo .txt

Código
  1.   q34q34rq34q
  2.  234342
  3.  werwe
  4.  werwr
  5.  

desde un php cambiar línea 3, por "lol" y quedaría...

Código
  1.  r q34q34rq34q
  2.  234342
  3.  lol
  4.  werwr
  5.  

llevo 2 días buscando en google y lo máximo que conseguí fue añadir contenido en la primera linea:s
 Alguien sabe como se hace?

  

 graciasss


Título: Re: editar línea de archivo txt desde php
Publicado por: Nakp en 25 Julio 2011, 02:06 am
cárgalo con fopen a un textarea y después de editarlo vuelve a guardarlo reemplazando el contenido del archivo por el del textarea :P perdona que no te escriba un código pero no ando con mucho tiempo :xD


Título: Re: editar línea de archivo txt desde php
Publicado por: raul338 en 25 Julio 2011, 02:09 am
Yo hago es hacer un explode para separar las lineas, entonces escribo las lineas anteriores, la linea nueva y las demas lineas :P

Con un foreach despues del explode y un IF se puede :D


Título: Re: editar línea de archivo txt desde php
Publicado por: usuario oculto en 25 Julio 2011, 02:11 am
@nakp
pero no quiero hacer un editor del archivo entero que muestre el archivo, solo de la línea



Título: Re: editar línea de archivo txt desde php
Publicado por: raul338 en 25 Julio 2011, 02:16 am
Código
  1. $handle = fopen("file.txt", "r");
  2. $txt = LeerArchivo($handle); // cargas el archivo a una variable, no te dejo el code. hazlo como ejercicio xD
  3. fclose($handle);
  4.  
  5. $txt = explode(_SLN, $txt); // _SLN = "\r\n"
  6. $pre = ""; $post = "";
  7. foreach ($txt as $dir) {
  8.     // De alguna forma identificas la linea 8-)
  9.     if(....) {
  10. if (!$exists)
  11. $pre .= $dir._SLN;
  12. else
  13. $post .= $dir._SLN;
  14. } else
  15. $exists = true;
  16. }
  17. }
  18. if ($exists)
  19. $handle = fopen("file.txt", "w");
  20. fwrite($handle, $pre);
  21. fwrite($handle, "Linea Actualizada");
  22. fwrite($handle, $post);
  23. fclose($handle);
  24. } else
  25. dai("No hay cambios");
  26.  

Algo asi :P


Título: Re: editar línea de archivo txt desde php
Publicado por: #!drvy en 25 Julio 2011, 02:16 am
Código
  1. <?php
  2. // Abrir el archivo
  3. $archivo = 'temp.txt';
  4. $abrir = fopen($archivo,'r+');
  5. $contenido = fread($abrir,filesize($archivo));
  6. fclose($abrir);
  7.  
  8. // Separar linea por linea
  9. $contenido = explode("\n",$contenido);
  10.  
  11. // Modificar linea deseada ( 2 )
  12. $contenido[2] = 'jajaja little monkey';
  13.  
  14. // Unir archivo
  15. $contenido = implode("\r\n",$contenido);
  16.  
  17. // Guardar Archivo
  18. $abrir = fopen($archivo,'w');
  19. fwrite($abrir,$contenido);
  20. fclose($abrir);
  21.  
  22. ?>

Archivo antes:

Código:
qwe
rty
uio
pas

Archivo despues:

Código:
qwe
rty
jajaja little monkey
pas

Obviamente, es 100 veces mejorable.. pero sirve para hacerse la idea no ? xD



Saludos


Título: Re: editar línea de archivo txt desde php
Publicado por: usuario oculto en 25 Julio 2011, 02:30 am
Código
  1. <?php
  2. // Abrir el archivo
  3. $archivo = 'temp.txt';
  4. $abrir = fopen($archivo,'r+');
  5. $contenido = fread($abrir,filesize($archivo));
  6. fclose($abrir);
  7.  
  8. // Separar linea por linea
  9. $contenido = explode("\n",$contenido);
  10.  
  11. // Modificar linea deseada ( 2 )
  12. $contenido[2] = 'jajaja little monkey';
  13.  
  14. // Unir archivo
  15. $contenido = implode("\r\n",$contenido);
  16.  
  17. // Guardar Archivo
  18. $abrir = fopen($archivo,'w');
  19. fwrite($abrir,$contenido);
  20. fclose($abrir);
  21.  
  22. ?>

Archivo antes:

Código:
qwe
rty
uio
pas

Archivo despues:

Código:
qwe
rty
jajaja little monkey
pas

Obviamente, es 100 veces mejorable.. pero sirve para hacerse la idea no ? xD



Saludos

¿por qué modifica la 3 y no la 2 como se indica?
pero ya tengo algo que se acerca mas :P


Título: Re: editar línea de archivo txt desde php
Publicado por: #!drvy en 25 Julio 2011, 02:31 am
Por que la array de php incluye también el 0  :P



Saludos


Título: Re: editar línea de archivo txt desde php
Publicado por: usuario oculto en 25 Julio 2011, 02:35 am
Por que la array de php incluye también el 0  :P



Saludos

entonces creo que ya tengo lo que necesitaba, muchas gracias a todos, no sabía que me ayudarían tan rápido :D
mucho nivel en este foro


Título: Re: editar línea de archivo txt desde php
Publicado por: WHK en 25 Julio 2011, 07:38 am
No siempre funciona un \n\r porque no todos los textos están diseñados en windows, algunos ni si quiera usan \n, por eso yo uso nl2br() y después le hago explode al '<br />'


Título: Re: editar línea de archivo txt desde php
Publicado por: #!drvy en 25 Julio 2011, 14:40 pm
yo de siempre se que

\n es para un salto de linea en memoria y que daba igual que programa y/o OS uses ( de hecho lo he probado under Ubuntu y OSx Lion)..





Saludos


Título: Re: editar línea de archivo txt desde php
Publicado por: WHK en 27 Julio 2011, 06:15 am
Si le haces explode por \n entonces las lineas te quedarán todas finalizadas en \r en el caso de windows y cuando le reingreses el \n\r quedarán como \r\n\r, no se que valor hexa utiliza mac pero en gedit me sale que no es ni \n ni \n\r creo que es solo \r pero no estoy seguro, por eso prefiero siempre nl2br()


Título: Re: editar línea de archivo txt desde php
Publicado por: #!drvy en 27 Julio 2011, 06:32 am
Pues la verdad no lo entiendo. Under windows si no pones \n\r en notepad queda descuadrado xD




Saludos