ошибка php, когда элемент XML не существует - PullRequest
0 голосов
/ 22 сентября 2011

Я использую PHP, чтобы захватить канал XML и отобразить его на своем веб-сайте, канал поступает из Этот блог NewsReach .

Я использую простой 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 Ответ

1 голос
/ 22 сентября 2011

Вы можете проверить, установлено ли оно и не пусто:

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

Помните, что $ media - это объект, вы не можете обращаться к нему как к массиву ($media['thumbnail'] должно быть $media->thumbnail).

...