1

私の FQL は、UID に対して無効な文字を返します。これが私のFQLです。 select uid,books from user where uid in (select uid2 from friend where uid1=me()). 私はPHP SDKを使用しており、1.0000008018280E+14(間に「E」があるもの)のようなIDを取得しています。合計 600 件の連絡先のうち約 400 件がこのような UID を示しfacebook.com/1.0000008018280E+14ています。私が使用しているコードは

  $fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
   $fql_query_result = file_get_contents($fql_query_url);
   $fql_query_obj = json_decode($fql_query_result, true)

  // display results of fql query
echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
4

1 に答える 1

1

How to get around or make PHP json_decode not alter my very large integer values? によると、、次の方法で実行できます。

<?php
$fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_result = preg_replace('/:\s*(\-?\d+(\.\d+)?([e|E][\-|\+]\d+)?)/', ': "$1"', $fql_query_result);
$fql_query_obj = json_decode($fql_query_result, true);

echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
?>

または、 PHP の FQL によって返される大きなユーザー ID の処理に示されているように

<?php
$fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode(preg_replace('/("\w+"):(\d+)/', '\\1:"\\2"', $fql_query_result), true);

echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
?>
于 2013-04-24T14:10:56.177 に答える