我正在尝试解析数组中的信息。该数组来自我已转换为json的RSS feed。数组是:
<channel>
<item>
<title> Title A </title>
<description> Description A </description>
<stuff url="google.com" type="search engine">
</item>
<item>
<title> Title B </title>
<description> Description B </description>
<stuff url="yahoo.com" type="old stuff">
</item>
....
</channel>
我正在使用类似以下内容进行解析:
$newsoutput = json_decode(json_encode($the_RSS_Link), TRUE);
foreach ($newsoutput['channel']['item'] as $item) {
echo $item['title'];
echo "<br>";
echo $item['description'];
echo "<br>";
echo $item['stuff']['url'];
echo "<br>";
}
我可以同时获得“标题”和“描述”;但我无法提取“内容”中的“网址”值。我尝试了各种组合但没有运气
请告知。
谢谢
H。
答案 0 :(得分:3)
这是一个经过测试的有效示例,需要使用simplexml_load_string()
<?php
$raw = <<<XML
<?xml version='1.0'?>
<document>
<channel>
<item>
<title>Title A</title>
<description>Description A</description>
<stuff url="google.com" type="search engine"></stuff>
</item>
<item>
<title>Title B</title>
<description>Description B</description>
<stuff url="yahoo.com" type="old stuff"></stuff>
</item>
</channel>
</document>
XML;
$xml = simplexml_load_string($raw);
$newsoutput = json_decode(json_encode($xml), true);
foreach ($newsoutput['channel']['item'] as $item) {
echo $item['title'];
echo "<br>\n";
echo $item['description'];
echo "<br>\n";
echo $item['stuff']['@attributes']['url'];
echo "<br>\n";
}
输出:
Title A<br>
Description A<br>
google.com<br>
Title B<br>
Description B<br>
yahoo.com<br>
请注意,您提供给我们的XML文档无效,我必须关闭标签。
答案 1 :(得分:1)
假设您具有有效的XML(如果这是一笔有效的RSS费用,则应该使用),您可以使用SimpleXML解析器:
$xml = '<channel>
<item>
<title> Title A </title>
<description> Description A </description>
<stuff url="google.com" type="search engine"/>
</item>
<item>
<title> Title B </title>
<description> Description B </description>
<stuff url="yahoo.com" type="old stuff"/>
</item></channel>';
$x = new simplexmlelement($xml);
foreach($x->item as $item){
echo $item->title . ' ' . $item->stuff['url'] . ' ' . $item->stuff['type'] . PHP_EOL;
}
请注意,此处的stuff
元素已被修改,因此可以自动关闭。
答案 2 :(得分:0)
如果RSS内容类似于您在示例中发布的内容,则应使用XML解析器而不是json_ *函数来解析RSS feed。
以下是一些使用SimpleXML https://www.php.net/manual/en/simplexml.examples-basic.php
的简单示例