首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助从pinterest rss源提取图像源url

需要帮助从pinterest rss源提取图像源url
EN

Stack Overflow用户
提问于 2012-08-21 02:33:48
回答 3查看 2.4K关注 0票数 0

基本上,我正在尝试向ExpressionEngine站点添加一个Pinterest feed小部件。我发现this tutorial非常有帮助,但问题是我不能使用被引用的标签剥离插件,因为我正在帮助的网站使用ExpressionEngine 1x,而这个插件只支持2x。

如果你查看pinterest rss提要的源代码,比如:http://pinterest.com/amazon/feed.rss,你会发现在<description>标签中是Pinterest图片的url,还有图钉的标题、标签和指向Pinterest上图钉的相对链接。我希望能够仅提取'img src‘后双引号之间的值。

本教程还使用了一个名为Magpie的插件,该插件已经加载到网站上,所以我在那里做得很好。

理想情况下,我希望我的代码看起来像这样:

代码语言:javascript
复制
{exp:magpie url="http://pinterest.com/amazon/feed.rss" parse="inward"
refresh="720" limit="5"} {items}<a href="{link}" target="_blank"><img
src="<?php code-to-grab-the-img-src->{description} ?>"
alt="{title}"></a>{/items} {/exp:magpie}

显然,"code-to-grab-the-img-src->{description}“不起作用,所以我在寻找一个函数或其他能起作用的函数。我怎样才能告诉喜饼在不使用SuperGeekery标签剥离插件的情况下只提取img src值呢?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-21 20:50:25

我建议构建一个简单的插件来处理这个问题,您可以使用与my other answer相同的正则表达式(由于将{description}内容导入PHP时出现问题,正则表达式会失败)。

下面是你的插件可能是什么样子:

代码语言:javascript
复制
<?php

$plugin_info = array(
  'pi_name' => 'Get Pinterest Image',
  'pi_version' => '1.0',
  'pi_author' => 'Derek Hogue',
  'pi_author_url' => 'http://amphibian.info',
  'pi_description' => 'Grabs the image URL from a Pinterest RSS feed description element.',
  'pi_usage' => Get_pinterest_image::usage()
  );

class Get_pinterest_image
{

var $return_data = "";

  function Get_pinterest_image()
  {
    global $TMPL;
    $fallback = $TMPL->fetch_param('fallback_image');
    preg_match("/src=\"(.+)(?=\"&gt;&lt;\/a&gt;)/ui", $TMPL->tagdata, $matches);
    $this->return_data = (!empty($matches)) ? $matches[1] : $fallback;
  }

  function usage()
  {
  ob_start(); 
  ?>
    {exp:get_pinterest_image fallback="/path/to/fallback_image.png"}{description}{/exp:get_pinterest_image}

    Where {description} is the "description" XML node from the Pinterest RSS feed (likely parsed via the Magpie plugin).
  <?php
  $buffer = ob_get_contents();
  ob_end_clean(); 
  return $buffer;
  }  

}

?>

根据EE约定,将其命名为get_pinterest_image.php,并放入您的/plugins/文件夹。然后在您的模板中:

代码语言:javascript
复制
{exp:magpie url="http://pinterest.com/amazon/feed.rss" refresh="720" limit="5" parse="inward"}
    {items}
        <a href="{link}" target="_blank"><img src="{exp:get_pinterest_image fallback="/path/to/fallback_image.png"}{description}{/exp:get_pinterest_image}" alt="{title}" /></a>
    {/items}
{/exp:magpie}
票数 1
EN

Stack Overflow用户

发布于 2012-08-21 03:58:58

Sure -在输出上启用PHP,然后使用下面的regex:

代码语言:javascript
复制
{exp:magpie url="http://pinterest.com/amazon/feed.rss" refresh="720" limit="5"}
{items}
<?php
    preg_match("/src=\"(.+)(?=\"&gt;&lt;\/a&gt;)/ui", '{description}', $matches);
    $src = (!empty($matches)) ? $matches[1] : '/path/to/default-image.png';
?>
    <a href="{link}" target="_blank"><img src="<?php echo $src; ?>" alt="{title}"></a>
{/items}
{/exp:magpie}

此代码包含另一个图像的后备,以便在由于某种原因找不到图像src时使用。

未经过测试,但它应该可以工作。

票数 0
EN

Stack Overflow用户

发布于 2012-08-21 10:19:30

RSS解析很难!如果您愿意做得更复杂一点,并将提要内容带入EE中,那么我使用仅支持ee2的DataGrab已经很幸运了,所以您可能会在免费的EE1前身FeedGrab中找到一些快乐。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12043109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档