如何使用 PHP 将 RSS XML 提要转换为数组

2024-03-18

我希望标题代表全部:-)

如何使用 PHP 将 RSS XML 提要转换为数组

如何才能做到这一点...

例如:我正在使用以下网址:

这导致了 XML 模式。我需要使用 PHP 将其转换为数组格式。

任何帮助将不胜感激和感激。

提前致谢....


一步步

How to Read an RSS Feed With PHP http://net.tutsplus.com/articles/news/how-to-read-an-rss-feed-with-php-screencast/

<?php

function getFeed($feed_url) {

    $content = file_get_contents($feed_url);
    $x = new SimpleXmlElement($content);

    echo "<ul>";

    foreach($x->channel->item as $entry) {
        echo "<li><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a></li>";
    }
    echo "</ul>";
}
?>

$x = new SimpleXmlElement($content);

echo "<ul>";

foreach($x->channel->item as $entry) {
    echo "<li><a href='$entry->link' title='$entry->title'>" . $entry->title . "</a></li>";
}
echo "</ul>";

XML to Array in PHP http://mysrc.blogspot.com/2007/02/php-xml-to-array-and-backwards.html

/*
    Working with XML. Usage: 
    $xml=xml2ary(file_get_contents('1.xml'));
    $link=&$xml['ddd']['_c'];
    $link['twomore']=$link['onemore'];
    // ins2ary(); // dot not insert a link, and arrays with links inside!
    echo ary2xml($xml);
*/

// XML to Array
function xml2ary(&$string) {
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parse_into_struct($parser, $string, $vals, $index);
    xml_parser_free($parser);

    $mnary=array();
    $ary=&$mnary;
    foreach ($vals as $r) {
        $t=$r['tag'];
        if ($r['type']=='open') {
            if (isset($ary[$t])) {
                if (isset($ary[$t][0])) $ary[$t][]=array(); else $ary[$t]=array($ary[$t], array());
                $cv=&$ary[$t][count($ary[$t])-1];
            } else $cv=&$ary[$t];
            if (isset($r['attributes'])) {foreach ($r['attributes'] as $k=>$v) $cv['_a'][$k]=$v;}
            $cv['_c']=array();
            $cv['_c']['_p']=&$ary;
            $ary=&$cv['_c'];

        } elseif ($r['type']=='complete') {
            if (isset($ary[$t])) { // same as open
                if (isset($ary[$t][0])) $ary[$t][]=array(); else $ary[$t]=array($ary[$t], array());
                $cv=&$ary[$t][count($ary[$t])-1];
            } else $cv=&$ary[$t];
            if (isset($r['attributes'])) {foreach ($r['attributes'] as $k=>$v) $cv['_a'][$k]=$v;}
            $cv['_v']=(isset($r['value']) ? $r['value'] : '');

        } elseif ($r['type']=='close') {
            $ary=&$ary['_p'];
        }
    }    

    _del_p($mnary);
    return $mnary;
}

// _Internal: Remove recursion in result array
function _del_p(&$ary) {
    foreach ($ary as $k=>$v) {
        if ($k==='_p') unset($ary[$k]);
        elseif (is_array($ary[$k])) _del_p($ary[$k]);
    }
}

// Array to XML
function ary2xml($cary, $d=0, $forcetag='') {
    $res=array();
    foreach ($cary as $tag=>$r) {
        if (isset($r[0])) {
            $res[]=ary2xml($r, $d, $tag);
        } else {
            if ($forcetag) $tag=$forcetag;
            $sp=str_repeat("\t", $d);
            $res[]="$sp<$tag";
            if (isset($r['_a'])) {foreach ($r['_a'] as $at=>$av) $res[]=" $at=\"$av\"";}
            $res[]=">".((isset($r['_c'])) ? "\n" : '');
            if (isset($r['_c'])) $res[]=ary2xml($r['_c'], $d+1);
            elseif (isset($r['_v'])) $res[]=$r['_v'];
            $res[]=(isset($r['_c']) ? $sp : '')."</$tag>\n";
        }

    }
    return implode('', $res);
}

// Insert element into array
function ins2ary(&$ary, $element, $pos) {
    $ar1=array_slice($ary, 0, $pos); $ar1[]=$element;
    $ary=array_merge($ar1, array_slice($ary, $pos));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PHP 将 RSS XML 提要转换为数组 的相关文章

随机推荐

  • Facebook 在尝试使用沙盒广告帐户创建自定义受众时抛出奇怪的错误

    我的团队拥有 FB 营销 商业帐户已有 2 年了 我们大约在那个时候开设了沙盒帐户 但是 当我运行脚本为沙盒帐户创建受众时 我收到以下错误 status 400 response error message 2654 Customer Li
  • 是否可以使用 owl carousel 实现圆形/无限轮播? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用猫头鹰旋转木马 它工作完美 只是它不支持循环 无限滚动 我确实在谷歌和 stackoverflow 上搜索过想法 但没有运气
  • 自定义元素上的 Angular 非常奇怪的错误

    我制作了一个自定义选择元素 但出现了一个奇怪的错误 我在这里重现了这个错误 https stackblitz com edit angular ff7i5j https stackblitz com edit angular ff7i5j
  • 我想做的是 FreezableCollection.AddRange(collectionToAdd)

    我想做的是FreezableCollection AddRange collectionToAdd 每次我添加到 FreezableCollection 时 都会引发一个事件并发生一些事情 现在我有一个新的收藏 我想添加 但这次我想要集合更
  • R - 改变列表结构

    我有一些文本数据 在读入 R 后以以下格式呈现 gt lst lt list A c aa bb cc B c aa bb cc dd 1 1 A 2 1 aa 3 1 bb 4 1 cc 5 1 B 6 1 aa 7 1 bb 8 1 c
  • 更新到 Spring Boot 2.2.1 后出现 NoSuchBeanDefinitionException

    将现有代码从 Spring Boot 2 2 0 升级到 2 2 1 后 我遇到了一个奇怪的问题 看来我的 spring data jdbc 存储库不再以某种方式被扫描 Caused by org springframework beans
  • 我可以使用协议相关的 标签吗?

    协议相关 URL http www paulirish com 2010 the protocol relative url 可以方便地包含使用与原始请求相同的架构 HTTP 或 HTTPS 的资源 图像 CSS JS 同时仅保留缓存页面的
  • 鼠标在图像上单击的位置

    我有一个 GWT 容器 里面有一些东西和一个添加了点击处理程序的图像 我尝试做的是获取相对于图像的确切鼠标事件 X 和 Y 坐标 我看到帖子了here https stackoverflow com questions 1726137 tr
  • 跨编译单元的 OCaml 递归模块

    我试图将以下递归模块拆分为单独的编译单元 具体来说 我希望 B 位于它自己的 b ml 中 以便能够与其他 A 一起重用它 module type AT sig type b type t Foo of b Bar val f t gt b
  • PL/SQL:从表中选择到关联数组中

    我正在尝试在一个查询中将数据选择到 pl sql 关联数组中 我知道我可以使用硬编码密钥来做到这一点 但我想看看是否有某种方法可以引用另一列 密钥列 DECLARE TYPE VarAssoc IS TABLE OF varchar2 2
  • 在拉斐尔·JS

    我需要做类似的事情 paper text Left Top this p Label paper text Left Top nbsp this p Label 但前置空格不会显示或显示为 nbsp 在文本中 我试过了 label attr
  • Laravel 模型工厂播种机将两个模型分配给一个模型

    我正在开发 Laravel 9 项目 需要创建大量测试数据 我有一些模型 我想通过我的模型工厂自动将它们链接起来 这是我的模型关系 User Company 用户可以拥有一家公司 但他们可能没有一家 Affiliate 附属机构拥有user
  • scikit 多标签分类:ValueError:错误的输入形状

    我相信SGDClassifier with loss log 支持多标签分类 我不必使用 OneVsRestClassifier 检查这个 https stackoverflow com questions 15036630 batch g
  • Gui 工具包,我应该使用哪个? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在编写一个相当大且复杂的数据分析程序 我认为是时候为该程序构建一个 GUI 了 所以我的问题是 我应该使用哪个 GUI 工具包 我对编码和构建 G
  • Phonegap 1.7中的Childbrowser插件只能第一次打开

    Phonegap 1 7 中的 Childbrowser 插件只能在第一次打开 我正在使用 Phonegap 1 7 和 Childbrowser 仅在子浏览器第一次工作时 当我关闭 Childbrowser 按下完成按钮 后 当我尝试打开
  • 如何仅删除父表中由子表中的外键引用的行

    我想从父表中删除行 元组 但它抛出错误消息 因为它的子表中有外键引用 但是 就我而言 我想仅删除父表中的记录并保留子表中的数据 有可能实现这一目标吗 我知道的用法ON DELETE CASCADE https stackoverflow c
  • ExtJS“日期字段”验证覆盖

    我需要一个具有一些自定义行为的日期列 特别是我需要能够在同一字段中输入日期或年龄 年龄保持呈现为年龄 日期保持呈现为日期 例如 输入 23 将使 23 在字段中保留为有效值 或者输入 22 1 88 将使 22 1 88 保留为有效值 所以
  • 在第一行有 rowspan 的情况下,在表格的第一行设置 css 样式

    我有很多表 想要在表的第一行设置 css 样式 前提是第一行有行跨度 table tbody tr td width 110 Name td td width 110 Size td td width 110 Status td tr tr
  • Vega-Lite 中的平行坐标?

    是否可以创建平行坐标维加精简版 https vega github io vega lite 我正在寻找一个简单但功能强大的 JavaScript 绘图库 并且需要支持平行坐标 I have googled https www google
  • 如何使用 PHP 将 RSS XML 提要转换为数组

    我希望标题代表全部 如何使用 PHP 将 RSS XML 提要转换为数组 如何才能做到这一点 例如 我正在使用以下网址 这导致了 XML 模式 我需要使用 PHP 将其转换为数组格式 任何帮助将不胜感激和感激 提前致谢 一步步 How to