0

PHP を使用して、 http://sports.espn.go.com/espn/rss/newsで公開されている最新の RSS フィードを取得しています。ここでの考え方は、http: //sports.espn.go.com/espn/rss/newsが私のシステムに追加されるたびに、最新の公開された投稿を取得するということです。

ここでの問題は、その RSS フィードを Firefox と Chrome で表示すると、結果が次のようになることです。 ここに画像の説明を入力



しかし、IE では、結果は次のようになります。
IEの結果

したがって、基本的に結果はまったく異なります。明らかに IE の結果は正しいものでした (投稿タイトルの下の時間に注意してください)。ただし、次のような私のコードでは:

header('Content-type: application/xml');
echo file_get_contents( 'http://sports.espn.go.com/espn/rss/news' );

Firefoxでも同じ結果が得られているため、 http://sports.espn.go.com/espon/rss/newsの最新の公開投稿を取得できません

これについて教えてください。どんな助けでも大歓迎です!

ありがとう!:-)

4

1 に答える 1

0

これが私の解決策ですが、RSS 投稿の日付形式が異なるため、一貫性のない結果が得られます

<?php
$doc = new DOMDocument();

$arrFeeds = array();
$doc->load( "http://sports.espn.go.com/espn/rss/news" );
foreach ( $doc->getElementsByTagName('item') as $node ) {
    $itemRSS = array(
        'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
        'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
        'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
        'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
    );
    array_push( $arrFeeds, $itemRSS ); #store array for comparing purposes
}   

$newArray = array();
foreach( $arrFeeds as $k=>$v ){
    $newArray[$v['date']] = $v;
}

ksort($newArray);
$finalArray = array();
foreach( $newArray as $k=>$v ){
    $finalArray[] = $v;
}
krsort($finalArray);

ItemDebug($finalArray);

function ItemDebug($value){
    echo "<pre>";
    print_r( $value );
    echo "</pre>";
}

?>

結果は次のようになります。 ここに画像の説明を入力

ありがとう!

于 2012-07-10T08:25:32.640 に答える