1

現在、私はコードを使用して、GoogleアカウントからGoogleの連絡先メールを取得し、それらを表に表示しています。メールは正しく表示されますが、その人の名前も表示されるようにしたいと思います。私が現在使用しているコードは次のとおりです。$xml に名前が含まれていることは知っていますが (html に出力してみました)、表示方法がわかりません。$result にはもう名前が含まれていないので、表示される名前はその前に来る必要があると思います。誰にもアイデアはありますか?

//passing accesstoken to obtain contact details
$xmlresponse =  file_get_contents('https://www.google.com/m8/feeds/contacts/default/full?oauth_token='.$tok_value.'&max-results=500');
//print_r($xmlresponse);
//reading xml using SimpleXML
$xml =  new SimpleXMLElement($xmlresponse);
//print_r($xml);
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');
//after dumping there is no names in the result
$result = $xml->xpath('//gd:email');
//var_dump($result);
$count = 0;
echo "<table class=\"inv-table\" cellpadding=\"5\">";
foreach ($result as $title) 
{
    //echo $title->attributes()->address . "<br><br>";
    echo "<tr><td><input type=\"checkbox\" 
                         name=\"email_to[]\" 
                         value=".$title->attributes()->address.">".$title->attributes()->address;
    echo "</td></tr>";
    //echo $title->attributes()->displayName;
    //echo $title->fullName;
    $count = $count + 1;
}
echo "</table>";

前もって感謝します!

4

4 に答える 4

2

このコードをループに入れます。

echo $xml->entry[$count]->title;
于 2012-10-24T11:05:31.670 に答える
2

上記の方法を試しましたecho $xml->entry[$count]->title;が、メールに正しい名前が付けられないため、うまくいきませんでした。代わりに私はこれをしました:

// https://www.google.com/m8/feeds/contacts/default/full?updated-min=1970-03-16T00:00:00&max-results=10000");

function getNamesAndEmails ($xml_response) {
    $xml = new \SimpleXMLElement($xml_response);
    $xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');

    $results = array ();
    foreach($xml->entry as $entry){

        $xml = simplexml_load_string($entry->asXML());

        $ary = array ();
        $ary['name'] = (string) $entry->title;

        foreach ($xml->email as $e) {
          $ary['emailAddress'][] = (string) $e['address'];
        }

        if (isset($ary['emailAddress'][0])) {
            $ary['email'] = $ary['emailAddress'][0];
        }

        $results[] = $ary;

    }

    return $results;
}
于 2013-03-11T17:13:40.277 に答える
1

名前を取得できましたか。私は同じ問題に対処しようとしてきました。

これは、見つかったすべての電子メール アドレスの結果であり、アドレスとその他のオプション項目 (いずれも名前ではありません) しかないためですecho $title->fullName$title

そこに名前が表示されているはずですprint_r($xml)が、私にとっては、どれだけの xpath でも名前を取得できませんでした。

于 2012-08-08T23:22:20.447 に答える
0

非常によく似たソリューションですが、私にとってはうまく機能します:

$url = "https://www.google.com/m8/feeds/contacts/default/full?max-results=2000&oauth_token=$token";
$xmlresponse =  file_get_contents($url);
$xml =  new SimpleXMLElement($xmlresponse);
$xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');
$result = $xml->xpath('//gd:email');

$contacts = array();
foreach ($result as $key=>$title) {
    $contact = new stdClass();
    $contact->name = sprintf("%s", $xml->entry[$key]->title[0]);
    $contact->email = sprintf("%s", $title->attributes()->address);
    $contacts[] = $contact;
}

したがって、ループの後、名前と電子メールで満たされた単純なオブジェクトを含む配列が得られます。

于 2015-08-10T00:38:57.657 に答える