1

simpleXMLフィードを使用してRSSフィードから画像を取得し、配列を介してデータを解析してforeachループに戻そうとしています...

ソースコードでは、[説明] の配列は空白として表示されていますが、別のループを使用してそれを引き出すことができましたが、次の配列を取り込む方法を見つけることはできません。各投稿の画像です!

ヘルプ?

ここで私の進捗状況を確認できます: http://dev.thebarnagency.co.uk/tfolphp.php

元のフィードは次のとおりです: feed://feeds.feedburner.com/TheFutureOfLuxury?format=xml

$xml_feed_url = 'http://feeds.feedburner.com/TheFutureOfLuxury?format=xml';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $xml_feed_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml = curl_exec($ch);
curl_close($ch);

function produce_XML_object_tree($raw_XML) {
libxml_use_internal_errors(true);
try {
    $xmlTree = new SimpleXMLElement($raw_XML);
} catch (Exception $e) {
    // Something went wrong.
    $error_message = 'SimpleXMLElement threw an exception.';
    foreach(libxml_get_errors() as $error_line) {
        $error_message .= "\t" . $error_line->message;
    }
    trigger_error($error_message);
    return false;
}
return $xmlTree;
}

$feed = produce_XML_object_tree($xml);

print_r($feed);

foreach ($feed->channel->item as $item) {
// $desc = $item->description;

echo '<a href="'.$item->link.'">link</a><br>';

    foreach ($item->description as $desc) {
        echo $desc;`


    } 
}

ありがとう

4

3 に答える 3

0

使える

wp_remote_get( $url, $args );

私はここから取得しますhttp://dynamicweblab.com/2012/09/10-useful-wordpress-functions-to-reduce-your-development-time

この関数の詳細についても入手してくださいhttp://codex.wordpress.org/Function_API/wp_remote_get

これが役立つことを願っています

于 2012-09-14T02:25:57.483 に答える
0

ここであなたの問題が何であるかは完全にはわかりません-あなたが提供したコードは正常に機能しているようです。

「各投稿の画像」について言及していますが、XML で具体的にラベル付けされた画像が表示されません。私が見ることができるcontentのは、XML のノードの HTML 内に、多くの場合<img>タグがあることです。XML ドキュメントに関する限り、この HTML の blob 全体は、特別なトークン<![CDATA[とで区切られた 1 つの文字列]]>です。この文字列を PHP 変数に取得すると (使用すると、その内部からタグ(string)$item->contentを抽出する方法を見つけることができますが<img>、HTML が有効な XML である可能性は低いことに注意してください。

もう 1 つ言及しておくべきことは、繰り返し言及されているように、SimpleXML は配列ではないということです。これはオブジェクトであり、特に魔法のようなものです。foreach ( $nodeList as $node )isset($node)count($nodeList)、などの SimpleXML オブジェクトに対して行うことはすべて$node->childNode$node['attribute']実際には関数呼び出しであり、多くの場合、別の SimpleXML オブジェクトが返されます。これは利便性のために設計されているため、多くの場合、オブジェクトを検査するよりも自然に見えることを書く方が役に立ちます。

たとえば、それぞれitemに 1 つしかdescriptionないため、内側のループは必要ありませんforeach。以下はすべて同じ効果があります。

  • foreach ($item->description as $desc) { echo $desc; }(タグ name を持つすべての子要素をループしますdescription)
  • echo $item->description[0];description(具体的には最初の子ノードにアクセスします)
  • echo $item->description;(最初の/唯一の子ノードに暗黙的にアクセスします。これが、書き込みが可能であり、2 番目の要素があった場合でも機能し、それを無視するdescription理由です)$feed->channel->itemchannel
于 2012-09-15T13:02:49.460 に答える