Извлечь изображение из RSS-канала в XML
Я пытаюсь отобразить мой Wordpress-канал прямо на моем внешнем magento-сайте. Я использую feedburner для достижения этого результата. До сих пор я был в состоянии отобразить название блога и ссылку. Чтобы улучшить внешний вид, я также хочу отобразить блог прямо рядом с заголовком.
Вот код php, который я использую для разбора XML Feed для отображения заголовков блога со ссылкой
<?php $channel = new Zend_Feed_Rss('http://feeds.feedburner.com/golfoy/pxce'); ?>
<div class="block block-rss">
<div class="block-content">
<ol id="graybox-latest-news">
<?php foreach ($channel as $item): ?>
<li><a href="<?php echo $item->link; ?>"><?php echo $item->description; ?></a></li>
<?php endforeach; ?>
</ol>
</div>
</div>
Ниже упоминается код XML для одного элемента фида. Вы можете найти полный канал по этому URL
<item>
<title>The grey-haired major winners.</title>
<link>http://blog.golfoy.com/the-grey-haired-major-winners/</link>
<pubDate>Mon, 29 Aug 2016 08:24:53 +0000</pubDate>
<guid isPermaLink="false">http://blog.golfoy.com/?p=980</guid>
<description>
<![CDATA[<img width="300" height="169" src="http://blog.golfoy.com/wp-content/uploads/2016/08/17_Jack_Nicklaus_20130805165206236_2560_1706.vresize.1200.675.high_.43-300x169.jpg" />
You are never too old to hit the greens and play a round of golf. In the history of men’s major championships, no golfer older than 48 (and just one golfer older than 46) has won. Have a look at the list of oldest men to have won a major: 1.Ben Hogan: The legend won […]]]>
</description>
<content:encoded>
....
</content:encoded>
</item>
Я пытаюсь поймать весь тег img или просто "src", который находится внутри тега описания элемента фида. Какова была бы лучшая практика, чтобы сделать это?
1 ответ
Вы выбираете описание в xml и отправляете на get_images .
шаг 1
включить simple_html_dom.php скачать
и измените определение ( URL_IMAGE, PATH_UPLOAD) в функции.
шаг 2
функция get_images($html)
require_once('simple_html_dom.php');
function get_images($html)
{
if (!empty($html))
{
$post_dom = str_get_html($html);
$first_img = $post_dom->find('img');
$image_list = array();
foreach ($first_img as $image)
{
if(isset($image->src) AND $image->src != '')
{
$image = $image->src;
$filetype = strtolower(substr(strrchr($image,'.'),1));
if (in_array($filetype,array('jpg','jpeg','png','gif')))
{
$filename = 'image_'.time().'_'.rand(0000000,99999999).'.'.$filetype;
$up = file_put_contents(PATH_UPLOAD.$filename,file_get_contents($image));
$size = filesize(PATH_UPLOAD.$filename);
list($width) = getimagesize(PATH_UPLOAD.$filename);
if(intval($size) >= 1024 AND $width >= 40)
{
$filename = URL_IMAGE.$filename;
}
else
{
unlink(PATH_UPLOAD.$filename);
$filename = '';
}
array_push($image_list, "$image|$filename");
}
}
}
return $image_list;
}
else
{
return array();
}
}
шаг 3
выберите описание
$html = $feed->item->description;
print_r(get_images($html));