Eliminar línea específica de un fichero de texto
Publicado por Álvaro (22 intervenciones) el 07/11/2019 11:51:15
Buenos días/ tardes/ noches. Estoy realizando un pequeño proyecto de una página web que consistirá en una tienda de libros online. Ahora mismo estoy llevando a cabo el registro, del cual se quieren guardar los datos de los usuarios registrados en un fichero XML. El trato de dicho fichero lo tengo de la siguiente manera:
El primer usuario se guarda en dicho fichero sin problemas, pero al querer insertar más se me posicionan después del cierre del nodo raíz, resultando en un XML no válido. De momento no puedo usar una base de datos ,siendo la solución más sencilla. Por eso busco alguna manera de eliminar la la última línea del fichero al momento de abrirlo en modo lectura / escritura desde el final, si fuera posible. Agradecería cualquier consejo / ayuda.
Muchas gracias, y un saludo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (file_exists("../data/UsuariosRegistrados.xml")) {
$xml = fopen("../data/UsuariosRegistrados.xml", "a");
} else {
$xml = fopen("../data/UsuariosRegistrados.xml", "w");
fputs($xml, "<?xml version='1.0' encoding='UTF-8'?>");
fputs($xml, "<Usuarios>");
}
fputs($xml, "<Usuario>");
fputs($xml, "<Nombre>" . $name . "</Nombre>");
fputs($xml, "<Contraseña>" . hash('md5', $password) . "</Contraseña>");
fputs($xml, "<Email>" . $emailAddress . "</Email>");
fputs($xml, "<Direccion>" . $address . "</Direccion>");
fputs($xml, "<FechaNacimiento>" . $birthDate . "</FechaNacimiento>");
fputs($xml, "</Usuario>");
fputs($xml, "</Usuarios>");
fclose($xml);
El primer usuario se guarda en dicho fichero sin problemas, pero al querer insertar más se me posicionan después del cierre del nodo raíz, resultando en un XML no válido. De momento no puedo usar una base de datos ,siendo la solución más sencilla. Por eso busco alguna manera de eliminar la la última línea del fichero al momento de abrirlo en modo lectura / escritura desde el final, si fuera posible. Agradecería cualquier consejo / ayuda.
Muchas gracias, y un saludo
Valora esta pregunta


2