Ver Mensaje Individual
  #26 (permalink)  
Antiguo 29/11/2013, 11:09
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: duda en buscar, editar y eliminar en archivo .user

Bueno, no hace lo que te pedí, tiene problemas (tenías que haberte dado cuenta), pero como lo has intentado te lo corrijo, y además te añado lo de normalizar el fichero, que es eliminar las lineas en blanco y los espacios, que no son necesarios para procesar un fichero de datos con el formato que tienes:
Código PHP:
Ver original
  1. <?php
  2. //Funciones
  3. function leerFicheroCrudo($fichero){
  4.     //Lee un fichero y lo devuelve como un array, línea a línea
  5.     $data = file_get_contents($fichero);
  6.     return explode(PHP_EOL, $data);
  7. }
  8. function normalizar($array){
  9.     //Elimina espacios en blanco, filas vacías y normaliza el array
  10.     $normalizado=array();
  11.     foreach ($array as $linea) {
  12.         $linea=preg_replace( "/\s+/", "", $linea );
  13.         if ($linea!=="") $normalizado[]=$linea;
  14.     }
  15.     return $normalizado;
  16. }
  17. function leerFicheroNormalizado($fichero){
  18.     return normalizar(leerFicheroCrudo($fichero));
  19. }
  20.  
  21. //MAIN
  22. $fichero="user.txt";
  23. $datos=leerFicheroNormalizado($fichero);
  24.  
  25. echo implode($datos,"<br/>");
Como nota, PHP_EOL es un string con el caracter FIN DE LINEA del sistema operativo donde corre el servidor, porque cada sistema operativo tiene su propio carácter fin de línea, y usar "\n" es un error.

Bien, ahora tienes un array con todas las lineas útiles del fichero normalizadas, es decir, sin espacios en blanco. pero es horrible haer lo que quieres usando este array. Es mejor transfiormar ese array en una estructura de datos útil.

Por ejemplo, para tu ejemplo:
Código BASH:
Ver original
  1. [account]
  2. user = 6
  3. pwd = 6
  4. group = 6
  5.  
  6. [account]
  7. user = 7
  8. pwd = 7
  9. group = 7
  10.  
  11. [mas_cosas]
  12. atributo=valor
Quiero que hagas una función, que pasándole un array normalizado, me devuelva el siguiente array PHP:

Código PHP:
Ver original
  1. $datos["acount"][0]=array("user=6", "pwd=6",  "group=6");
  2. $datos["acount"][1]=array("user=7", "pwd=7",  "group=7");
  3. $datos["mas_cosas"][0]=array("atributo=valor");

Hazlo y pónmelo. Si lo consigues y entiendes, incluso es posible que hayas captado la filosofía y sepas hacia donde vamos.
La función ISSET te servirá para saber si existe por ejemplo $datos["cualquier cosa"], asi sabrás si tienes que declara un nuevo array para esa posición, o sólo añadirle valores.

Última edición por marlanga; 29/11/2013 a las 11:18