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<?php
//Funciones
function leerFicheroCrudo($fichero){
//Lee un fichero y lo devuelve como un array, línea a línea
}
function normalizar($array){
//Elimina espacios en blanco, filas vacías y normaliza el array
foreach ($array as $linea) {
if ($linea!=="") $normalizado[]=$linea;
}
return $normalizado;
}
function leerFicheroNormalizado($fichero){
return normalizar(leerFicheroCrudo($fichero));
}
//MAIN
$fichero="user.txt";
$datos=leerFicheroNormalizado($fichero);
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[account]
user = 6
pwd = 6
group = 6
[account]
user = 7
pwd = 7
group = 7
[mas_cosas]
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$datos["acount"][0]=array("user=6", "pwd=6", "group=6"); $datos["acount"][1]=array("user=7", "pwd=7", "group=7"); $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.