我使用 atom2rss.xsl 将 Atom feed 转换为 RSS 。工作正常。
然后,使用 DOMDocument ,我尝试获取帖子标题和 URL:
$feed = new DOMDocument();
$feed->loadHTML('<?xml encoding="utf-8" ?>' . $html);
if (!empty($feed) && is_object($feed) ) {
foreach ($feed->getElementsByTagName("item") as $item){
echo 'url: '. $item->getElementsByTagName("link")->item(0)->nodeValue;
echo 'title'. $item->getElementsByTagName("title")->item(0)->nodeValue;
}
return;
}
但是帖子 URL 为空。
查看此eval which contains HTML 。我究竟做错了什么?我怀疑我没有通过 $item->getElementsByTagName("link")->item(0)->nodeValue
正确获取链接标记。
最佳答案
我认为问题在于有几个<link>
每一项中的元素,(我认为)您感兴趣的是带有 rel="self"
的元素作为属性。最快的方法(不弄乱 XPath)是循环遍历每个 <link>
元素检查右侧 rel
值,然后取 href
属性来自...
if (!empty($feed) && is_object($feed) ) {
foreach ($feed->getElementsByTagName("item") as $item){
$url = "";
// Look for the 'right' link tag and extract URL from that
foreach ( $item->getElementsByTagName("link") as $link ) {
if ( $link->getAttribute("rel") == "self" ) {
$url = $link->getAttribute("href");
break;
}
}
echo 'url: '. $url;
echo 'title'. $item->getElementsByTagName("title")->item(0)->nodeValue;
}
return;
}
这给出了...
url: https://www.blogger.com/feeds/2984353310628523257/posts/default/1947782625877709813titleExtraordinary Genius - Cp274
关于php - 通过 DOMDocument 获取链接标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52257829/