我正在尝试设置一个将浏览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个项目,其中只有一个应该保留。你能给我一些正确的设置指导,然后一旦我正确识别它们,还可以提供如何删除项目的信息吗?
答案 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