Necesito de su ayuda para parsear un archivo de texto plano .txt que tiene una estructutra definida.
Lo que tengo es más o menos son muchos bloques similares a este:
Código:
Bueno... los datos son del juego Lineage II. Y esto es la lista de drops de un mounstruo. Como se ve... hay grupos definidos por llaves {}. Los grupos más pequeños son de un item y tienen la siguiente estructura{ { { {[adena];99;159;100} };70 }; { { {[long_sword];1;1;5.8252}; {[sword_of_reflexion];1;1;5.8252}; {[sword_of_reflexion_blade];1;1;82.5243}; {[sword_of_watershadow];1;1;5.8253} };0.1514 }; { { {[animal_skin];1;1;47.0588}; {[coal];1;1;35.2941}; {[scroll_of_escape];1;1;17.6471} };5.6642 } }
{[nombre_item];valor_min;valor_max;probabilidad};
Además, se puede ver un valor numérico después de la llave } que afecta a la probabilidad de todo un grupo. La estructura y la profundidad es la misma que puse en el ejemplo. Pero la cantidad de grupos es variable.
Necesito que me ayuden a parsearlo de tal manera que pueda tener una estructura más sencilla de trabajar, como esta:
Código PHP:
<?
$array_drop['adena']['min'] = 99;
$array_drop['adena']['max'] = 159;
$array_drop['adena']['probabilidad'] = 100*70; // prob del item * prob del grupo
$array_drop['long_sword']['min'] = 1;
$array_drop['long_sword']['max'] = 1;
$array_drop['long_sword']['probabilidad'] = 5.8252*0.1514; // prob del item * prob del grupo
Un dato más:
Noten que el punto y coma ";" está ahí siempre que siga algún grupo más. Cuando estamos en el último grupo de ese nivel, ya no pone más el ";".
Además, todo el bloque no tiene saltos de línea ni espacios en blanco (en el ejemplo le dí saltos y tabs para que se aprecie mejor la estructura). Todo está ne una sola línea y, como dije, no hay ningún espacio en blanco.
Ojalá me puedan echar una mano.