Как проверить, существует ли элемент пространства имен в PHP

Я пытаюсь проверить, существует ли элемент media:content, чтобы миниатюрное изображение можно было показать из RSS-ленты, но не уверен, как проверить его существование.

Я могу получить media:content url и показать изображение в порядке, но проверить, не существует ли оно, не получается. Я попробовал isset и определил, но я явно делаю что-то не так.

Главная линия, о которой я беспокоюсь ниже:

if (определено ($ item-> getElementsByTagNameNS (' http://search.yahoo.com/mrss/', 'content') -> item (0) -> getAttribute ('url')))

<?php
$feed = new DOMDocument();
$feed->load('http://rss.cnn.com/rss/cnn_topstories.rss');
$json = array();
$items = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('item');
$json['item'] = array();
foreach($items as $item) {
 $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
 $description = $item->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
 $text = $item->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
    if(defined($item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('url'))){
        $image = $item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('url');
    }
    else{
        $image = '';
    }
    echo $image;
}
?>

2 ответа

Найджел был прав, используя -> длина - способ сделать это.

if($item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->length > 0){
            $image = $item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('url');
}

Когда вы используете getElementsByTagName, это всегда возвращает DOMNodeList. Главное - проверить, есть ли в списке узлов 0 элементов.

Так что вместо defined() или же isset()использовать ->length...

$nodes=$domDocument->getElementsByTagName('book') ; 
if ($nodes->length==0) { 
   // no results 
} 

(Пример из http://php.net/manual/en/domdocument.getelementsbytagname.php)

Другие вопросы по тегам