php - 通过 DOMDocument 获取链接标签

标签 php domdocument

我使用 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/

相关文章:

php - 有没有办法在使用 DomDocument 解析 html 时保持实体完整?

php - 如何使用 DOMDocument 获取 anchor 文本?

php - fatal error : Class 'XSLTProcessor' not found - but is installed

php - FuelPHP "invalid data source name"错误

php - 选择 mysql 填充的下拉列表的值

php - Symfony2 : manual file upload with VichUploaderBundle

php - 无法将类 DOMDocument 的对象转换为字符串的可捕获 fatal error

php dom 获取节点的所有属性

symfony - 注意:未定义的属性:DOMDocument::$documentElement

PHP DomDocument - getElementByID(部分匹配)如何?