0

我正在尝试在我的 magento 网站中显示 RSS 提要,但在显示提要的图像时遇到了困难。研究提要,我发现图像位于 content:encoded 标记内,因此我无法使用 $item->image 之类的东西直接访问它。这是我当前的代码:

<?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; ?>    
$?>

我也尝试过使用 $item->content 但这会返回新闻源的全部内容。所以我的问题是,如何从 content:encoded 访问图像的源以便在我的提要上显示它?

更新:经过更多研究,我尝试使用 preg_match 像这样: preg_match('/<*img[^>]*src = ["\']?([^"\'] )/i', $item->内容,$matches); 回声 $matches[0]; 我得到了正确的图像路径,但我把它放在一个循环中,所以每个我应该至少有 2 张图像,但我只得到 1 张。这是为什么?

已解决:我设法通过将 $matches[0] 更改为 $matches[1] 来解决我的问题。我想我使用 0 认为它是数组匹配的索引。

4

1 回答 1

1

为了从 content:encoded 标签中获取图像源,我使用了正则表达式(preg_match)。这是我当前代码的外观:

<?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; ?>

希望这对其他人有帮助。

于 2013-07-09T02:48:35.123 回答