XML项目不存在时的php错误

时间:2011-09-22 08:49:49

标签: php xml feed

我正在使用PHP获取XML Feed并将其显示在我的网站中,Feed来自 This NewsReach Blog

我正在使用一些简单的PHP代码来获取详细信息,如下所示:

    $feed = new SimpleXMLElement('http://blog.newsreach.co.uk/atom.xml', null, true);

    $i = 0;

    foreach($feed->entry as $entry)
    {
        if ($i < 4)
        {
            $title = mysql_real_escape_string("{$entry->title}");
            $summary = mysql_real_escape_string("{$entry->content}");
            $summary = strip_tags($summary);
            $summary = preg_replace('/\s+?(\S+)?$/', '', substr($summary, 0, 100));
            $url = mysql_real_escape_string("{$entry->link[4]['href']}");
            $media = $entry->children('http://search.yahoo.com/mrss/');
            $attrs = $media->thumbnail[0]->attributes();
            $img = $attrs['url'];
        }
    }

我遇到的问题是每个博客文章中都不存在媒体缩略图标记,导致出现错误并阻止XML Grabber运行。

我厌倦了:

    if ($media == 0)
    {
    }
    else
    {
        $attrs = $media->thumbnail[0]->attributes();
            $img = $attrs['url'];
    }

    if ($media['thumbnail'] == 0)
    {
    }
    else
    {
        $attrs = $media->thumbnail[0]->attributes();
            $img = $attrs['url'];
    }

我没有运气,我希望有人可以帮助我检查XML项目是否存在然后根据它进行处理。

全部谢谢

1 个答案:

答案 0 :(得分:1)

您可以检查它是否已设置且不为空:

$img = '';
if (!empty($media->thumbnail[0])) {
    $attrs = $media->thumbnail[0]->attributes();
    $img = $attrs['url'];
}

请记住,$ media是一个对象,您无法像数组一样访问它($media['thumbnail']应该是$media->thumbnail)。