1

使用 rss 提要时如何在 simplepie 中仅显示图像。我正在使用 simplepie,但只能从 rss 中提取图像。如何做到这一点?

4

2 回答 2

2

考虑到某些提要结构不同,据我所知,没有明确的方法可以做到这一点。这就是我能够做到的。首先查看这篇文章:

如何使用 SimplePie 从 WordPress RSS 提要显示缩略图?

我能够复制和粘贴代码并进行一些小改动

我没有使用 Wordpress,但它帮助我了解需要做什么。

在 feed->init() 之后插入此代码;

    //This function will get an image from the feed

function returnImage ($text) {
    $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
    $pattern = "/<img[^>]+\>/i";
    preg_match($pattern, $text, $matches);
    $text = $matches[0];
    return $text;
}


    //This function will filter out image url which we got from previous returnImage() function

    function scrapeImage($text) {
        $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/';
        preg_match($pattern, $text, $link);
        $link = $link[1];
        $link = urldecode($link);
        return $link;

    }

现在您要调用函数,以便它搜索描述,或者在我的情况下搜索内容,以找到 img 标记并正确构造输出。这就是我的代码的样子:

foreach ($feed->get_items(0 , 3) as $item):
    $feedDescription = $item->get_content();
    $image = returnImage($feedDescription);
    $image = scrapeImage($image);
    $image_url= $item->get_permalink();
    $description = $item->get_description();
?>
        <div class="item">
            <h4><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h4>
            <div class="image-box"><?php echo '<a href="' . $image_url . '"><img src="' . $image . '" /></a>'."\n";?></div>
            <p><?php echo $description ?></p>
            <p><a href="<?php echo $item->get_permalink(); ?>">Continue Reading</a></p>   
        </div>

    <?php endforeach; ?>

这可能需要一些错误,但是一旦您知道您的 img 标签在提要中的位置,您就可以使用 simplepie 来解析提要,该函数将找到标签和格式,因此它已准备好 html。

要只拉一篇文章,您可以编辑您的循环:

foreach ($feed->get_items(0 , 1) as $item): 

第一个数字 (0) 是起点,0 是最新的帖子。第二个数字 (1) 是要拉多少帖子。由于您只想要一张图像,因此您希望该数字为 1。

于 2012-06-06T19:57:32.280 回答
1

也许您想在客户端执行此操作。那么使用 jQuery 就很容易了。假设您的 javascript 中的项目内容看起来像这样

var content = '<div><a href="http://kwout.com/cutout/b/es/y2/ukn_rou_sha.jpg"
imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img border="0" height="239" src="http://kwout.com/cutout/b/es/y2/ukn_rou_sha.jpg"
width="320"></a>Erat austro rerum.</div>';

然后,您可以使用 jQuery 选择器轻松识别和隔离内容中的图像。例如使用

$(content).find('img:first');   //find the FIRST image inside an element or
$(content).find('a:first');     //take the hyperlink AND the image

如果它不是内容中的第一个图像,或者内容比这个示例更复杂(主要是 ;-) - 不用担心 - 然后一些其他选择器会解决问题。查看 jquery.com 上的文档以获取更多信息。

通过这种方式,我删除了元素,向内容中的不同元素添加了一些或添加了类,以我的方式显示帖子。

于 2012-06-20T15:48:00.977 回答