Извлечь изображение из RSS-канала в XML

Я пытаюсь отобразить свою ленту Wordpress непосредственно на моем внешнем сайте magento. Я использую feedburner для достижения этого результата. Пока мне удалось отобразить заголовок блога и ссылку. Чтобы улучшить внешний вид, я также хочу отобразить блог прямо рядом с заголовком.

Вот код php, который я использую для анализа XML-канала для отображения заголовков блога со ссылкой

<?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&#8217;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 [&#8230;]]]>
    </description>
    <content:encoded>
    ....
    </content:encoded>
    </item>

Я пытаюсь поймать весь тег img или только «src», который находится внутри тега описания элемента канала. Что было бы наилучшей практикой для этого?


person Tushar Narang    schedule 29.08.2016    source источник
comment
Возможный дубликат Как извлечь img src , title и alt из html с помощью php?   -  person revo    schedule 29.08.2016


Ответы (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));
person Mohammad    schedule 29.08.2016
comment
Использование дополнительной библиотеки, такой как simple_html_dom, вообще не влияет на производительность. - person revo; 29.08.2016