Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算RSS源中的项目标记(不知道标记名称)_Php_Xml_Rss_Simplexml - Fatal编程技术网

Php 计算RSS源中的项目标记(不知道标记名称)

Php 计算RSS源中的项目标记(不知道标记名称),php,xml,rss,simplexml,Php,Xml,Rss,Simplexml,我想从rss提要中获取所有使用过的标签(在$feed->channel->item中),而不知道实际的标签名。是的,也许这听起来很奇怪,让我解释一下 示例 <item> <title>Inademen van bloem kan astma veroorzaken</title> <link>http://www.nu.nl/gezondheid/3872032/inademen-van-bloem-kan-astma-veroor

我想从rss提要中获取所有使用过的标签(在$feed->channel->item中),而不知道实际的标签名。是的,也许这听起来很奇怪,让我解释一下

示例

<item>
    <title>Inademen van bloem kan astma veroorzaken</title>
    <link>http://www.nu.nl/gezondheid/3872032/inademen-van-bloem-kan-astma-veroorzaken.html</link>
    <description>Het keer op keer inademen van het fijne stof dat afkomstig is van het bakmeel bloem, kan astma veroorzaken. </description>
</item>
<item>
    <title>Inademen van bloem kan astma veroorzaken</title>
    <link>http://www.nu.nl/gezondheid/3872032/inademen-van-bloem-kan-astma-veroorzaken.html</link>
    <description>Het keer op keer inademen van het fijne stof dat afkomstig is van het bakmeel bloem, kan astma veroorzaken. </description>
    <test>Testing!</pubDate>
</item>

伊纳德曼·范·布卢姆·卡斯玛·维鲁扎肯
http://www.nu.nl/gezondheid/3872032/inademen-van-bloem-kan-astma-veroorzaken.html
阿夫康斯蒂格的朋友是巴克梅尔·布卢姆(bakmeel bloem),这是一个非常好的例子。
伊纳德曼·范·布卢姆·卡斯玛·维鲁扎肯
http://www.nu.nl/gezondheid/3872032/inademen-van-bloem-kan-astma-veroorzaken.html
阿夫康斯蒂格的朋友是巴克梅尔·布卢姆(bakmeel bloem),这是一个非常好的例子。
测试!
我想要实现的(上述XML的示例脚本输出):

  • 标签
    使用了2次
  • 标签
    使用了2次
  • 标签
    使用了2次
  • 标签
    使用了1次
我该怎么做?当我已经知道标记名时,我无法轻松找到所有标记,但是如何在不知道
中使用了哪些标记的情况下计算它们

此时,我的脚本只是加载提要并循环/显示项目:

<?php
getFeed('http://www.nu.nl/feeds/rss/gezondheid.rss');

function getFeed($feedUrl) {

    $feedUrl = file_get_contents($feedUrl);
    $feedXml = new SimpleXmlElement($feedUrl);
    $itemTags = array();

    echo "<ul>";
    foreach($feedXml->channel->item as $item) {
        echo "<li><a href='$item->link'>" . $item->title . "</a></li>";
    }
    echo "</ul>";
}
channel->item as$item){
回声“
  • ”; } 回声“”; }
    您可以使用
    ->getName
    方法获取节点的名称。将它们全部放入一个数组中,然后使用
    array\u count\u values()

    例如:

    $url = 'http://www.nu.nl/feeds/rss/gezondheid.rss';
    $xml = simplexml_load_file($url);
    $tags = array();
    foreach($xml->channel->item as $item) {
        $children = $item->children(); // get all children of each item tag
        foreach ($children as $node) {
            $tags[] = $node->getName(); // get the node name of each children
        }
    }
    
    $count = array_count_values($tags); // count the values
    echo '<pre>';
    print_r($count);
    

    您的url无法访问(有时)您是指RSS url(nu.nl)吗?它应该是有效的。然而,这对我的问题并不重要,任何RSS URL都应该这样做。当我测试时,有时它会关闭,无论如何,你可以在下面查看我的答案。这很好,正是我要找的,而且很容易理解。
    Array
    (
        [title] => 10
        [link] => 10
        [guid] => 10
        [description] => 10
        [pubDate] => 10
        [category] => 10
        [enclosure] => 10
        [copyrightPhoto] => 10
        [related] => 6
    )