Ver Mensaje Individual
  #10 (permalink)  
Antiguo 18/10/2011, 13:35
Avatar de stramin
stramin
 
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: como puedo parsear un documento de texto con datos como este en php

Se que no es la forma más correcta pero yo lo habría hecho así:

Código PHP:
Ver original
  1. //la variable donde esta toda la cadena se llama $cadena
  2. /*[["tipo","id","nombre","carpeta","extra1","extra2","extra3","extra4","public_name","public_desc","extra5","extra6","extra7"],["tipo","id","nombre","carpeta","extra1","extra2","extra3","extra4","public_name","public_desc","extra5","extra6","extra7"]]
  3. [["tipo","id","nombre","carpeta","extra1","extra2","extra3","extra4","public_name","public_desc","extra5","extra6","extra7"]]*/
  4.  
  5. //quito todas las "
  6. $cadena=str_replace('"','',$cadena);
  7. //cambio los ]][[ por ],[ "
  8. $cadena=str_replace(']]
  9. [[','],[',$cadena);
  10.  
  11. /*[[tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7],[tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7]] [[tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7]]*/
  12.  
  13. //Guardo cada registro en un arreglo llamado registros
  14. $registros=explode("],[",substr($cadena,2,-2));
  15.  
  16. /*
  17. tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7
  18. tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7
  19. tipo,id,nombre,carpeta,extra1,extra2,extra3,extra4,public_name,public_desc,extra5,extra6,extra7
  20. */
  21.  
  22. //Luego guardo los datos del cada registro
  23. $x=0;
  24. foreach($registros as $registro){
  25.     $campos[$x]=explode(",",$registro);
  26.     $x++;
  27. }
  28.  
  29. //Para comprobar que estan todos los datos se pueden mostrar así:
  30. for($f=0;$campos[$f][0];$f++){
  31.     echo "MOSTRANDO REGISTRO $f<br>";
  32.     foreach($campos[$f] as $campo) echo "$campo<br>";
  33. }

lo cual me devuelve esto:

Cita:
MOSTRANDO REGISTRO 0
tipo
id
nombre
carpeta
extra1
extra2
extra3
extra4
public_name
public_desc
extra5
extra6
extra7
MOSTRANDO REGISTRO 1
tipo
id
nombre
carpeta
extra1
extra2
extra3
extra4
public_name
public_desc
extra5
extra6
extra7
MOSTRANDO REGISTRO 2
tipo
id
nombre
carpeta
extra1
extra2
extra3
extra4
public_name
public_desc
extra5
extra6
extra7
Espero que se entienda el método

al final es un explode( de un explode())
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D