2010-10-17 5 views
0

Je cherchais un moyen de convertir les données API Graph de Facebook en Array afin que je puisse accéder rapidement à des données «J'aime» sur mon site Web. J'utilise actuellement ce code pour extraire 'Shares' (aka, Like) sur un lien particulier.Facebook Graph to Array

fb = file_get_contents("https://graph.facebook.com/$url", "rb"); 
    $fb = str_replace('}','',$fb); 
    $fb = str_replace('{','',$fb); 

    $e = explode(',',$fb); 

    for($i = 0; $i < count($e); $i++) 
    { 
     if(preg_match("/\"shares\"\:/i",$e[$i])) 
     { 
      $c = substr($e[$i],9); 
     } 
    } 

echo $c; 

C'est ce que le rendement de l'API graphique: (Lorsque sur la page "https://graph.facebook.com/[LINK]")

{ 
    "id": "MY URL", 
    "shares": 302 
} 

Y at-il de toute façon je peux facilement transformer l'information ici dans un tableau? Ainsi, le produit final deviendra quelque chose comme:

$fbArray["id"] // will Return: MY URL 

et

$fbArray["shares"] // will Return: 302 

Ma méthode fonctionne, mais il est bâclée et vraiment pas de codage très dynamique du tout!

Toute aide sera appréciée.

Répondre

8

Facebook renvoie des données au format JSON! Vous semblez l'analyser avec une regex. Je suis sûr que la plupart des gens ici recommande fortement de ne pas le faire.

Utilisez plutôt la fonction json_decode de PHP. En passant le true comme le second param vous donnera un tableau, plutôt qu'un objet.

$fb = file_get_contents("https://graph.facebook.com/$url", "rb"); 
$fb_array=json_decode($fb,true); 
+0

(en passant, je parsé XML comme ça quand je débutez - pire encore, en utilisant 'exec' pour exécuter grep, sed et awk Quand vous voyez une structure de données, rappelez-vous, il y a presque toujours. méthode non-hacky, facile à utiliser avec PHP/Python/etc!) – JAL

+0

Vous êtes mon nouveau dieu. Merci Alex. – Moe

+0

Ha, je suis content d'avoir pu aider. – JAL