显示来自 Wordpress RSS 提要的媒体文件
Display media file from Wordpress RSS feed
我正在使用以下代码从 wordpress RSS 提要中获取数据。但是,我在从提要中获取 'media file' 时遇到问题。
<?php
$rss = new DOMDocument();
$rss->load('http://www.ipa.co.uk/rss/jobs');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
'image' => $node->getElementsByTagName('enclosure')->item(0)->getAttribute('url'),
);
array_push($feed, $item);
}
$limit = 20;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));?>
<div class="col-md-4 job-item">
<div class="job-item__inner">
<?php
echo '<h2 class="job-title"><a href="'.$link.'" title="'.$title.'">'.$title.'</a></h2>';
echo '<small><em>Posted on '.$date.'</em></small></p>';
echo '<p>'.$description.'</p>';
echo '<img src="'.$image.'"/>';?>
</div>
</div>
<?php } ?>
我在 SO 上看到了 this answer,它帮助我添加了 getElementsByTagName('enclosure')->item(0)->getAttribute('url')
。但是它不显示任何 img src。我认为 'enclosure' 是正确的,因为如果我将其更改为类似 getElementsByTagName('media')->item(0)->getAttribute('url')
的内容,我会出错
问题一定是我瞄准了错误的 Feed 区域。但是我不确定要添加什么才能显示图像。
在使用 PHP 进行开发时,您绝对应该 enable NOTICES。这会让您得到答案:您的提取代码是正确的,但在 for 循环中您需要额外的一行
$image = $feed[$x]['image'];
否则变量 $image
在此上下文中未定义。
//编辑:顺便说一句,2 个循环效率低下。最好只使用 foreach 循环和一个计数器。一旦计数器为 20,请执行 break;
我正在使用以下代码从 wordpress RSS 提要中获取数据。但是,我在从提要中获取 'media file' 时遇到问题。
<?php
$rss = new DOMDocument();
$rss->load('http://www.ipa.co.uk/rss/jobs');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
'image' => $node->getElementsByTagName('enclosure')->item(0)->getAttribute('url'),
);
array_push($feed, $item);
}
$limit = 20;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));?>
<div class="col-md-4 job-item">
<div class="job-item__inner">
<?php
echo '<h2 class="job-title"><a href="'.$link.'" title="'.$title.'">'.$title.'</a></h2>';
echo '<small><em>Posted on '.$date.'</em></small></p>';
echo '<p>'.$description.'</p>';
echo '<img src="'.$image.'"/>';?>
</div>
</div>
<?php } ?>
我在 SO 上看到了 this answer,它帮助我添加了 getElementsByTagName('enclosure')->item(0)->getAttribute('url')
。但是它不显示任何 img src。我认为 'enclosure' 是正确的,因为如果我将其更改为类似 getElementsByTagName('media')->item(0)->getAttribute('url')
问题一定是我瞄准了错误的 Feed 区域。但是我不确定要添加什么才能显示图像。
在使用 PHP 进行开发时,您绝对应该 enable NOTICES。这会让您得到答案:您的提取代码是正确的,但在 for 循环中您需要额外的一行
$image = $feed[$x]['image'];
否则变量 $image
在此上下文中未定义。
//编辑:顺便说一句,2 个循环效率低下。最好只使用 foreach 循环和一个计数器。一旦计数器为 20,请执行 break;