2011-12-17 8 views
5

Voy a llamar a la secuencia de comandos en: http://phat-reaction.com/googlefonts.php?format=php¿Cómo deserializar esta cadena en una matriz PHP de pares clave => valor?

Y necesito para convertir los resultados en un formato de matriz PHP como el que actualmente estoy de codificación duro:

$googleFonts = array(
    "" => "None", 
    "Abel"=>"Abel", 
    "Abril+Fatface"=>"Abril Fatface", 
    "Aclonica"=>"Aclonica", 
    etc... 
    ); 

devuelto El PHP es serializado:

a:320:{ 
    i:0; 
    a:3:{ 
     s:11:"font-family"; 
     s:32:"font-family: 'Abel', sans-serif;"; 
     s:9:"font-name"; 
     s:4:"Abel"; 
     s:8:"css-name"; 
     s:4:"Abel"; 
     } 
    i:1; 
    a:3:{ 
     s:11:"font-family"; 
     s:38:"font-family: 'Abril Fatface', cursive;"; 
     s:9:"font-name"; 
     s:13:"Abril Fatface"; 
     s:8:"css-name"; 
     s:13:"Abril+Fatface"; 
     } 

     etc... 

¿Cómo puedo traducir eso a mi matriz?

+2

Eso es simplemente el formato de serialización de PHP. Utilice ['unserialize()'] (http://php.net/unserialize) para regresarlo. – mario

Respuesta

8

Usted puede hacer esto por revertir la seriación de los datos (utilizando unserialize()) y luego iterar a través de él:

$fonts = array(); 

$contents = file_get_contents('http://phat-reaction.com/googlefonts.php?format=php'); 
$arr = unserialize($contents); 

foreach($arr as $font) 
{ 
    $fonts[$font['css-name']] = $font['font-name']; 
} 

Dependiendo de lo que usted está usando esto para, puede ser Es una buena idea guardar en caché los resultados para que no obtenga datos externos cada vez que se ejecuta el script.

+0

+1 gracias por la ayuda! Formular una pregunta separada sobre cómo almacenar en caché los resultados. – RegEdit

+0

Aquí está mi pregunta relacionada si estás interesado en echarle un vistazo> http://stackoverflow.com/questions/8547253/how-to-cache-a-server-call-and-test-for-cache-expiration-prior- to-calling-for-ne – RegEdit

Cuestiones relacionadas