via txt titulos tabla reg recupere que programa pizzas phpfacil permite pedido los internet hacer datos cursos crear confeccionar archivo php file-io fopen fwrite

titulos - crear archivo txt php



Sobrescribir lĂ­nea en archivo con PHP (5)

Lo más probable es que haga lo que sugirió Jeremy, pero una forma alternativa de hacerlo aquí es otra solución. Esto no ha sido probado o usado y es para sistemas * nix.

$cmd = "grep ''@parsethis'' " . $filename; $output = system($cmd, $result); $lines = explode("/n", $result); // Read the entire file as a string // Do a str_repalce for each item in $lines with ""

¿Cuál es la mejor manera de sobrescribir una línea específica en un archivo? Básicamente quiero buscar en un archivo la cadena ''@parsethis'' y sobrescribir el resto de esa línea con otra cosa.


Si el archivo es realmente grande (archivos de registro o algo así) y está dispuesto a sacrificar la velocidad para el consumo de memoria, podría abrir dos archivos y básicamente hacer el truco que Jeremy Ruten propuso utilizando los archivos en lugar de la memoria del sistema.

$source=''in.txt''; $target=''out.txt''; // copy operation $sh=fopen($source, ''r''); $th=fopen($target, ''w''); while (!feof($sh)) { $line=fgets($sh); if (strpos($line, ''@parsethis'')!==false) { $line=''new line to be inserted'' . PHP_EOL; } fwrite($th, $line); } fclose($sh); fclose($th); // delete old source file unlink($source); // rename target file to source file rename($target, $source);


Si el archivo no es demasiado grande, la mejor manera sería leer el archivo en una matriz de líneas con file () , buscar a través de la matriz de líneas para su cadena y editar esa línea, luego implode () la matriz de nuevo juntos y fwrite () vuelve al archivo.


Su principal problema es el hecho de que la nueva línea puede no tener la misma longitud que la línea anterior. Si necesita cambiar la longitud de la línea, no hay forma de reescribir al menos todo el archivo después de la línea modificada. La forma más fácil es crear un nuevo archivo modificado y luego moverlo sobre el original. De esta manera, hay un archivo completo disponible en todo momento para los lectores. Use el bloqueo para asegurarse de que solo una secuencia de comandos esté modificando el archivo de una vez, y como va a reemplazar el archivo, realice el bloqueo en un archivo diferente. Echa un vistazo a la flock() .

Si está seguro de que la nueva línea tendrá la misma longitud que la línea anterior, puede abrir el archivo en modo lectura / escritura (use r+ como segundo argumento para fopen() ) y llame a ftell() para guardar la posición la línea comienza en cada momento antes de llamar a fgets() para leer una línea. Una vez que encuentre la línea que desea sobrescribir, puede usar fseek() para volver al principio de la línea y fwrite() los datos nuevos. Una forma de obligar a la línea a tener siempre la misma longitud es espaciando la almohadilla hasta la longitud máxima posible.


o si su archivo no es demasiado grande:

$sample = file_get_contents(''sample''); $parsed =preg_replace(''#@parsethis.*#'', ''REPLACE TO END OF LINE'', $sample);

Tendrás que elegir los delimitadores ''#'' que no están presentes en el archivo.