编程语言
首页 > 编程语言> > 在PHP中从XML内部解析HTML标签

在PHP中从XML内部解析HTML标签

作者:互联网

我正在尝试在PHP中解析http://uk.news.yahoo.com/rss时,使用simplexml_load_string创建自己的RSS feed(出于学习目的).我被困在阅读< description>内的HTML标签.标签.

到目前为止,我的代码如下所示:

$feed = file_get_contents('http://uk.news.yahoo.com/rss');
$rss = simplexml_load_string($feed);

//for each element in the feed
foreach ($rss->channel->item as $item) {
    echo '<h3>'. $item->title . '</h3>'; 

        foreach($item->description as $desc){

             //how to read the href from the a tag???

             //this does not work at all
             $tags = $item->xpath('//a');
             foreach ($tags as $tag) {
                 echo $tag['href'];
             }
       }
}

有什么想法如何提取每个HTML标签吗?

谢谢

解决方法:

描述内容已对其特殊字符进行了编码,因此它不会被视为XML中的节点,而只是一个字符串.您可以解码特殊字符,然后将HTML加载到DOMDocument中,然后执行您想做的任何事情.例如:

foreach ($rss->channel->item as $item) {
    echo '<h3>'. $item->title . '</h3>'; 

        foreach($item->description as $desc){

            $dom = new DOMDocument();
            $dom->loadHTML(htmlspecialchars_decode((string)$desc));

            $anchors = $dom->getElementsByTagName('a');
            echo $anchors->item(0)->getAttribute('href');
        }
}

XPath也可用于DOMDocument,请参阅DOMXPath.

标签:simplexml,php,xml-parsing
来源: https://codeday.me/bug/20191030/1969720.html