【问题标题】:Magpie not getting media:thumbnail element喜鹊没有得到媒体:缩略图元素
【发布时间】:2015-04-05 13:52:09
【问题描述】:

我正在创建一个使用大量 rss 源的 php 脚本。它将 rss 提要放入数据库中。 将缩略图/图像放入 xml 文件有多种方式。我对一种特定方式有疑问。

当一个 xml 文件包含这样的内容时:Source

...
    <media:content type="image/jpeg" url="http://static3.hln.be/static/photo/2015/1/8/6/20150405151722/crop_7613016.jpg">
    <media:thumbnail url="http://static3.hln.be/static/photo/2015/1/8/6/20150405151722/crop_7613016.jpg"/>
    </media:content>
...

由于某种原因,MagPie 似乎没有获得该元素。如果我 var_dump 那个项目,它看起来像这样:

...
    ["media"]=> array(1) { ["content"]=> string(1) " " } ["content"]=> string(1) " "
...

有人知道如何提取缩略图元素吗? 提前致谢。

更新 - (一些示例代码):

    $rss = fetch_rss('http://www.hln.be/rss.xml');
    foreach ($rss->items as $item )
    { //loop through rss feed
        var_dump($item); //the var_dump without media elements

        return $array = $arrayName = array(
            'title' => $item['title'],
            'url' => $item['link'],
            ...);

        putDataInDatabase(); //put everything in the database
    }

更全面地了解 var_dump

array(10) { ["title"]=> string(62) "Isinbayeva ..."" ["link"]=> string(23) "http://s.hln.be/2276986" ["description"]=> string(141) "Yelena Isinbayeva ..." ["pubdate"]=> string(29) "Sun, 05 Apr 2015 13:06:00 GMT" ["author"]=> string(8) "redactie" ["guid"]=> string(23) "http://s.hln.be/2276986" ["media"]=> array(1) { ["content"]=> string(1) " " } ["content"]=> string(1) " " ["summary"]=> string(141) "Yelena Isinbayeva wil... " ["date_timestamp"]=> int(1428239160) }

【问题讨论】:

  • 你用的是哪个magpie版本?
  • 我正在使用 magpierss-0.72。我认为最近的一个。
  • 能否请您添加更多上下文,例如您如何创建 var_dump?您是否使用任何特定方法来获取您转储的数据?如果是,是哪一个?如果没有,还有,你用的是哪个常用的?
  • 我更新了问题。我var_dump了magpie自带的fetch_rss函数的输出。我可以从 $item 中获取所有其他数据。只是当它的这种特殊的 xml 语法不起作用时。

标签: php xml rss magpie


【解决方案1】:

元素在该数组内,例如您可以像这样访问内容缩略图的 URL:

$item['media']['content_thumbnail@url']

从你的例子的角度来看:

$rss = fetch_rss('http://www.hln.be/rss.xml');
foreach ($rss->items as $item) { //loop through rss feed
    var_dump($item['media']['content_thumbnail@url']);
}

给出以下输出:

string(79) "http://static3.hln.be/static/photo/2015/2/10/14/20150405204108/crop_7613834.jpg"
string(78) "http://static0.hln.be/static/photo/2015/1/9/13/20150405201321/crop_7613833.jpg"
string(77) "http://static2.hln.be/static/photo/2015/7/0/8/20150405203748/crop_7613858.jpg"
string(77) "http://static2.hln.be/static/photo/2015/0/6/8/20150405200321/crop_7613813.jpg"
string(79) "http://static2.hln.be/static/photo/2015/17/6/10/20150405200509/crop_7613830.jpg"
string(77) "http://static1.hln.be/static/photo/2015/7/9/7/20150405195208/crop_7613782.jpg"
string(78) "http://static2.hln.be/static/photo/2015/0/15/7/20150405193052/crop_7613737.jpg"
...

这是媒体元素的整体结构:

Array
(
    [content#] => 1
    [content@] => type,url
    [content@type] => image/jpeg
    [content@url] => http://static3.hln.be/static/photo/2015/2/10/14/20150405204108/crop_7613834.jpg
    [content] => 

    [content_thumbnail#] => 1
    [content_thumbnail@] => url
    [content_thumbnail@url] => http://static3.hln.be/static/photo/2015/2/10/14/20150405204108/crop_7613834.jpg
)

【讨论】:

  • 我希望是这样。但是 $item['media'] 只是返回:array(1) { ["content"]=> string(1) " " }。 $item['media']['content'] 返回 string(1) " " 并且所有其他应该存在的元素都是 NULL。我发现越来越多的人遇到了这个问题。它甚至是 sourceforge (sourceforge.net/p/magpierss/support-requests/23) 上 magpierss 页面上的一张公开票。所以我使用 Simplepie for xml 与特定的语法。这绝对不是一个修复,更像是一个有很多开销的解决方法。如果我有时间,我会尝试自己看一下 magpies 的源代码。
  • 您使用的是哪个 PHP 版本?因为我在这里逐字记录了你的例子,所以一定有一些不同的原因。
  • 当前版本 5.6.2
  • 我在 PHP 5.4、5.5 和 5.6 中没有问题。刚试过。一定还有别的问题。我正在使用来自 Github (master) 的 ZIP 包。也许这会有所作为?
  • 有效!但我真的不知道我做了什么,但我在安装 xdebug 时使用了 php.ini 文件。我会将这个答案标记为已解决,因为它可能对其他人有所帮助。
猜你喜欢
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 2016-03-15
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多