-2

phpでrss-feedを解析しようとしていますが、何も表示されません。ご覧のとおり、$docと$itemRSS配列の両方をエコーし​​ようとしていますが、何も表示されず、「成功」します。配列の項目0に到達しない場合。

誰かが「[ばかげた間違い]について考えたことはありますか?」と言ってくれるとワクワクしますので、この質問の初心者と考えてください。ありがとうございました!

  $doc = new DOMDocument();
  $doc->load('http://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=rss');
  $arrFeeds = array();
  foreach ($doc->getElementsByTagName('item') as $node) {
    $itemRSS = array ( 
      'guid' => $node->getElementsByTagName('guid')->item(0)->nodeValue
      );
    array_push($arrFeeds, $itemRSS);
  }

    if ($itemRSS[0] != NULL) {

        echo 'Success!';

    }

echo $itemRSS;
echo $doc; 

そしてこれは、ページが完全に空白であることを意味します。エラーなし、何もありません。

更新:現在、私のウェブホストではallow_url_fopenが非アクティブ化されているため、これを行う別の方法を見つける必要があります。はぁ

4

3 に答える 3

0

スクリプトの最後にこれらの行を追加して確認します。

var_dump($itemRSS);
var_dump($arrFeeds);
var_dump($doc);

問題は、情報が正しく表示されていないことを知っていることです。

于 2012-09-04T15:50:19.463 に答える
0

1つのオブジェクトと1つの配列をエコーし​​ようとする以外は、スクリプトに問題はありません。print_r$arrFeedsすべてを見ることができます

于 2012-09-04T15:58:18.660 に答える
0

他の回答で述べたように、配列やオブジェクトをエコーし​​ようとするなど、いくつか間違ったことをしていることになります。何らかの理由で、$ arrFeedsでも結果が得られませんが、そうする必要があります。

これを行う簡単な方法は、フィードのレンダリング方法をJSONに変更することです:http://pipes.yahoo.com/pipes/pipe.run ?_id = 566903fd393811762dc74aadc701badd&_render = json

次に、json_decode()を使用して、すべてのアイテムの配列を取得できます。

$contents = json_decode(file_get_contents('http://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=json'));
foreach($contents['items'] as $item) {
  // use $item['title'], $item['description'] etc... 
}

配列やオブジェクトなどの構造化データではなく、文字列やintなどのみをエコーできることに注意してください。

簡単にするために、ブラウザーでそのURLを開き、JSONの内容を@http://json.parser.online.fr/で分析できます。配列がどのように構造化されているかがわかります。

JSONは、IMOでの作業がはるかに簡単な形式です。

編集:

file_get_contents()が無効になっているため、cURLを使用できます(特にallow_url_fopenを無効にすると、ほとんどのサーバーにインストールする必要があります)。

function file_get_contents_curl($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}
于 2012-09-04T16:14:15.223 に答える