RSS beslemesi ayrıştırma zaman, yanlış tarih görüntülenir

0 Cevap php

İşte benim kod:

<?php

$RSSFEEDS = array(
    0 => "http://samnabi.posterous.com/rss.xml",
);
function FormatRow($date, $title, $link, $description) {
return <<<HTML
<p class="blogdate">$date</p><h2 class="blogtitle">$title</h2>
<div class="clearer">&nbsp;</div>
$description
HTML;
}
ob_start();
if (!isset($feedid)) $feedid = 0;
$rss_url = $RSSFEEDS[$feedid];
$rss_feed = file_get_contents($rss_url);
$rss_feed = str_replace("<![CDATA[", "", $rss_feed);
$rss_feed = str_replace("]]>", "", $rss_feed);
$rss_feed = str_replace("\n", "", $rss_feed);
$rss_feed = preg_replace('#<image>(.*?)</image>#', '', $rss_feed, 1 );
preg_match_all('#<pubDate>(.*?)</pubDate>#', $rss_feed, $date, PREG_SET_ORDER); 
preg_match_all('#<title>(.*?)</title>#', $rss_feed, $title, PREG_SET_ORDER);  
preg_match_all('#<link>(.*?)</link>#', $rss_feed, $link, PREG_SET_ORDER);
preg_match_all('#<description>(.*?)</description>#', $rss_feed, $description, PREG_SET_ORDER);
if(count($title) <= 1) {
    echo "No new blog posts. Check back soon!";
}
else {
    for ($counter = 1; $counter <= 3; $counter++ ) {
        if(!empty($title[$counter][1])) {
            $title[$counter][1] = str_replace("&", "&", $title[$counter][1]);
            $title[$counter][1] = str_replace("&apos;", "'", $title[$counter][1]);          
            $row = FormatRow($date[$counter][1],$title[$counter][1],$link[$counter][1],$description[$counter][1]);
            echo $row;
        }
    }
} 
ob_end_flush();

?> 

Bu komut dosyası çalıştırıldığında, ilk öğe görüntüleyen ikinci maddenin pubDate. İkinci öğe böylece üçüncü maddenin pubDate görüntüler, ve. Yani gösterilen tarihler size özgün XML dosyasına bakın tarihler değildir. Bunu nasıl düzeltebilirim?

Bonus soru: "15 Mayıs 2010" yerine "Sat, 15 May 2010 03:28:00 -0700 arasında ile sonuna kadar böylece nasıl, pubDate etiketinin başında ve sonunda kapalı karakterler şerit yok "?

0 Cevap