PHP – Editar / Eliminar una línea particular en un archivo

Tengo un archivo users.txt que contiene:

 "ID" "Access" ;Expire>>26-08-2013<>27-08-2013<>28-08-2013<< 

Quiero comprobar si la fecha de caducidad es mayor que la fecha actual, y si es así quiero agregar un punto y coma al comienzo de esa línea o simplemente eliminar esa línea.

El código que escribí hasta ahora es el siguiente:

 $files = file('users.txt'); foreach ($files as $line) { $pattern = '/>>(.*)< $expiredate) { echo 'access expired... edit/delete the line
'; } else { echo 'do nothing, its ok -> switching to the next line...
'; } }

Recupera la ‘fecha de caducidad’ de cada línea del archivo. También comprueba si es mayor que la fecha actual, pero en este momento no sé cómo editar (agregando punto y coma al principio) o elimino la línea que satisface la condición.

¿Alguna sugerencia?

Prueba como este:

 $files = file('users.txt'); $new_file = array(); foreach ($files as $line) { $pattern = '/>>(.*)< $expiredate) { // For edit $line = preg_replace('/condition/', 'replace', $line); // Edit line with replace $new_file[] = $line; // Push edited line //If you delete the line, do not push array and do nothing } else { $new_file[] = $line; // push line new array } } file_put_contents('users.txt', $new_file); 

Si desea editar esa línea, use preg_match y presione la línea editada a la nueva matriz.

Si desea eliminar esa línea, no haga nada. Solo ignoralo.

Si desea cambiar a la siguiente línea, inserte la línea actual en la nueva matriz.

Al final, guarde una new array en el archivo.

El proceso básico es:

 open main file in readonly mode open secondary (temp) file in writeonly mode Loop: readline from main file process the line save to secondary file until end of file close both files delete the main file rename the secondary file.