0

私の質問は、curl を使用して fb の友達にアクセスし、json にデコードしたいのですが、aman、adam などの文字 a で始まる名前の友達だけを表示したいです。次は私のコードです。

<?php
// create a new cURL resource
$json_url="https://graph.facebook.com/100001513782830/friends?access_token=AAACEdEose0cBAPdK62FSjs4RvA21efqc8ZBKyzAesT5r4VSpu0XScAYDtKrCxk4PmcRBVzE2SLiGvs2d5FeXvZAD72ZCShwge3vk4DQqRAb8vLlm1W3";
$ch = curl_init( $json_url );


    // Configuring curl options
/*  $options = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => array('Content-type: application/json')
        );

    // Setting curl options
    curl_setopt_array( $ch );

    */// Getting results
    $result =  curl_exec($ch); // Getting jSON result string

    $obj = json_decode($result, true);
    foreach($obj[data] as $p)
    {
        echo '

        Name: '.$p[name][first].'

        Age: '.$p[age].'

        ';

    }
4

2 に答える 2

0

もちろん、「a」をハードコードするのではなく、この目的のために:

foreach($obj[data] as $p){
  if(strtolower(substr(trim($p[name][first]),0,1)) == 'a'){
       echo 'Name: '.$p[name][first].'Age: '.$p[age];
  }
}
于 2013-01-29T12:35:41.697 に答える
0

ところで、セキュリティ トークンを (URL で) 公共の場所に投稿することはお勧めできません。

名前は文字列なので、その配列を反復処理して名前でフィルタリングするだけです。

$letter = 'A';
foreach($obj['data'] as $p) {
    if ($p['name'][0] == $letter) {
        // do something with $p
    }
}

しかし、UTF-8 には少し問題があります。この解決策 (および substr を使用した解決策も) は、マルチバイト文字では機能しません。したがって、単純な substr 関数の代わりに mb_substr を使用する必要があります。

foreach($obj['data'] as $p) {
    if(mb_strtolower(mb_substr($p['name'], 0, 1))) == 'Á'){
        echo "Name: ", $p['name'], "\n",
             "Age: ", $p['age'], "\n";
    }
}
于 2013-01-29T12:45:56.533 に答える