user1597438
user1597438

Reputation: 2221

Getting images from content:encoded tag

I am trying to display RSS feed in my magento website and I'm having difficulties showing the image for the feed. Studying the feed, I see that the image is inside a content:encoded tag so I can't access it directly by using something like $item->image. Here's my current code:

<?php $channel = new Zend_Feed_Rss('newsfeedurl'); ?>
<?php foreach ($channel as $item): ?>
    <?php if($i<2) { ?>
        <img src="<?php echo $item->image; ?>" title="<?php echo $item->title; ?>" height="63" width="95" />
        <?php echo "image:".$item->content; ?>
    <?php } else {} ?>
    <?php $i++; ?>
<?php endforeach; ?>    
$?>

I tried also tried using $item->content but this returns the entire content of the newsfeed. So my question is, how can I access the image's source from content:encoded in order to display it on my feed?

UPDATE: After some more research, I tried using preg_match like so: preg_match('/<*img[^>]*src = ["\']?([^"\'])/i', $item->content, $matches); echo $matches[0]; I'm getting the correct image path but I've placed this inside a loop so each I should have at least 2 images but I'm only getting 1. why is this?

SOLVED: I've managed to solve my problem by changing $matches[0] to $matches[1]. I guess I was using 0 thinking it was the index of an array matches.

Upvotes: 0

Views: 1361

Answers (1)

user1597438
user1597438

Reputation: 2221

In order to get the image source from the content:encoded tag, I used regular expression (preg_match). Here's how my current code looks:

<?php $channel = new Zend_Feed_Rss('newsfeedurl'); ?>
<?php foreach ($channel as $item): ?>
    <?php preg_match('/<*img[^>]*src *= *["\']?([^"\']*)/i', $item->content, $matches); ?>
    <?php if($i<2) { ?>
        <img src="<?php echo $matches[1]; ?>" title="<?php echo $item->title; ?>" height="63" width="95" /></a></div>
    <?php } else {} ?>
    <?php $i++; ?>
<?php endforeach; ?>

Hope this helps someone else.

Upvotes: 1

Related Questions