5

別の質問で見つけたいくつかのコードに基づいて、次のコードを実装しました:
Select specific Tumblr XML values with PHP

function getPhoto($photos, $desiredWidth) {
$currentPhoto = NULL;
$currentDelta = PHP_INT_MAX;
foreach ($photos as $photo) {
    $delta = abs($desiredWidth - $photo['max-width']);
    if ($photo['max-width'] <= $desiredWidth && $delta < $currentDelta) {
        $currentPhoto = $photo;
        $currentDelta = $delta;
    }
}
return $currentPhoto;
}

$request_url = "http://ACCOUNT.tumblr.com/api/read?type=photo&start=0&num=30";
//$request_url = "tumblr.xml";
$xml = simplexml_load_file($request_url);

foreach ($xml->posts->post as $post) {
echo "<div class=\"item\"><a href='".$post['url']."'><img src='".getPhoto($post->{'photo-url'}, 250)."' width=\"250\" /></a></div>"; 
}

このコードは私の開発サイトでは問題なく機能しましたが、別のサーバーにプッシュすると、Tumblr から外部 XML が読み込まれませんでした...ローカル テキスト XML は問題なく読み込まれました (コード内でコメント アウトされています)。

クライアントからアカウント資格情報を取得するのを待っているので、カスタマー サービスに連絡して作業することができます...

それまでの間、誰かがこれを引き起こす可能性のあるアイデアを持っていますか?
サーバー設定?
PHP コードがありませんか?

4

1 に答える 1

0

そのため、cURL を使用して XML をロードすることになりました...動作したコードは次のとおりです。

function getPhoto($photos, $desiredWidth) {
    $currentPhoto = NULL;
    $currentDelta = PHP_INT_MAX;
    foreach ($photos as $photo) {
        $delta = abs($desiredWidth - $photo['max-width']);
        if ($photo['max-width'] <= $desiredWidth && $delta < $currentDelta) {
            $currentPhoto = $photo;
            $currentDelta = $delta;
        }
    }
    return $currentPhoto;
}

$url="http://ACCOUNT.tumblr.com/api/read?type=photo&start=0&num=30";
$ch = curl_init();      
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);    // get the url contents

$data = curl_exec($ch); // execute curl request
curl_close($ch); // close curl request

$xml = new SimpleXMLElement($data);

foreach($xml->posts->post as $post) {
    echo "<div class=\"item\"><a href='".$post['url']."'><img src='".getPhoto($post->{'photo-url'}, 250)."' width=\"250\" /></a></div>"; 
}
于 2012-11-17T00:47:49.733 に答える