2011-12-17 27 views
5

我打電話的腳本在:http://phat-reaction.com/googlefonts.php?format=php如何將此字符串反序列化爲key =>值對的PHP數組?

,我需要的結果轉換成像一個我目前硬編碼一個PHP陣列格式:

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

的PHP返回的是序列化:

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... 

如何將其轉換爲我的數組?

+2

這很簡單的PHP序列化格式。使用['unserialize()'](http://php.net/unserialize)將其返回。 – mario

回答

8

您可以通過反序列化數據(使用unserialize()),然後通過它遍歷做到這一點:

$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']; 
} 

根據你使用這個什麼,它可能是緩存結果是一個好主意,所以每次腳本運行時都不會獲取外部數據。

+0

+1感謝您的幫助!在單獨的問題中詢問如何緩存結果。 – RegEdit

+0

這裏是我的相關問題,如果你有興趣檢查出來> http://stackoverflow.com/questions/8547253/how-to-cache-a-server-call-and-test-for-cache-expiration-prior-到呼叫換NE – RegEdit

相關問題