Lo que quiero hacer es por ejemplo cambiar la linea de un archivo txt desde un php
Archivo .txt
q34q34rq34q
234342
werwe
werwr
desde un php cambiar línea 3, por "lol" y quedaría...
r q34q34rq34q
234342
lol
werwr
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
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
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
@nakp
pero no quiero hacer un editor del archivo entero que muestre el archivo, solo de la línea
$handle = fopen("file.txt", "r");
$txt = LeerArchivo($handle); // cargas el archivo a una variable, no te dejo el code. hazlo como ejercicio xD
fclose($handle);
$txt = explode(_SLN, $txt); // _SLN = "\r\n"
$pre = ""; $post = "";
foreach ($txt as $dir) {
// De alguna forma identificas la linea 8-)
if(....) {
if (!$exists)
$pre .= $dir._SLN;
else
$post .= $dir._SLN;
} else
$exists = true;
}
}
if ($exists)
$handle = fopen("file.txt", "w");
fwrite($handle, $pre);
fwrite($handle, "Linea Actualizada");
fwrite($handle, $post);
fclose($handle);
} else
dai("No hay cambios");
Algo asi :P
<?php
// Abrir el archivo
$archivo = 'temp.txt';
$abrir = fopen($archivo,'r+');
$contenido = fread($abrir,filesize($archivo));
fclose($abrir);
// Separar linea por linea
$contenido = explode("\n",$contenido);
// Modificar linea deseada ( 2 )
$contenido[2] = 'jajaja little monkey';
// Unir archivo
$contenido = implode("\r\n",$contenido);
// Guardar Archivo
$abrir = fopen($archivo,'w');
fwrite($abrir,$contenido);
fclose($abrir);
?>
Archivo antes:
qwe
rty
uio
pas
Archivo despues:
qwe
rty
jajaja little monkey
pas
Obviamente, es 100 veces mejorable.. pero sirve para hacerse la idea no ? xD
Saludos
Cita de: drvy | BSM en 25 Julio 2011, 02:16 AM
<?php
// Abrir el archivo
$archivo = 'temp.txt';
$abrir = fopen($archivo,'r+');
$contenido = fread($abrir,filesize($archivo));
fclose($abrir);
// Separar linea por linea
$contenido = explode("\n",$contenido);
// Modificar linea deseada ( 2 )
$contenido[2] = 'jajaja little monkey';
// Unir archivo
$contenido = implode("\r\n",$contenido);
// Guardar Archivo
$abrir = fopen($archivo,'w');
fwrite($abrir,$contenido);
fclose($abrir);
?>
Archivo antes:
qwe
rty
uio
pas
Archivo despues:
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
Por que la array de php incluye también el 0 :P
Saludos
Cita de: drvy | BSM en 25 Julio 2011, 02:31 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
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 />'
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
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()
Pues la verdad no lo entiendo. Under windows si no pones \n\r en notepad queda descuadrado xD
Saludos