从基于XML的关闭日期中删除项目

时间:2014-07-22 14:38:43

标签: php xml rss domdocument

我正在尝试设置一个将浏览XML的php脚本,如果某个项目的pubDate超过7天,则会删除整个项目。到目前为止我想出的是:

<?php

$rss = new DOMDocument();
$url = 'http://www.url.net/app/Test.xml';
$rss->load($url);
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
    $item = 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('date')->item(0)->nodeValue,
        );
    array_push($feed, $item);

}

$limit = 50;
for($x=0;$x<$limit;$x++) {
   date_default_timezone_set('America/Los_Angeles');
$newDate = date("D, d M Y G:i:s -0400", strtotime("-8 day"));
    $date = date('D, d M Y G:i:s -0400', strtotime($feed[$x]['date']));
        $theitem = date('D, d M Y G:i:s -0400', strtotime($feed[$x]['date']));
 if ($date > $newDate) {
        echo "Don't delete";
    }

    else {
        echo "Delete";
    }


}


?>

这给了我50个回声,其中只有1个是Delete,而XML实际上只包含10个项目,其中只有一个应该保留。你能给我一些正确的设置指导,然后一旦我正确识别它们,还可以提供如何删除项目的信息吗?

1 个答案:

答案 0 :(得分:0)

您将这些值作为RSS日期格式的字符串进行比较。这类似于Mon, 15 Aug 2005 15:52:01 +0000,例如Fri将小于Mon。我建议你直接比较strtotime()的结果。

$newDate = strtotime("-8 day");
$date = strtotime($feed[$x]['date']);
if ($date > $newDate) {
     echo "Don't delete";
} else {
  echo "Delete";
}

另一种方法是使用带有PHP回调的Xpath:https://stackoverflow.com/a/23683347/2265374