[英]How to check if namespace element exists in PHP
我正在嘗試檢查元素media:content是否存在,以便可以從rss feed中顯示縮略圖,但不確定如何驗證它的存在。
我可以獲取media:content URL並很好地顯示圖像,但是無法查看是否存在。 我嘗試過isset和定義,但我顯然做錯了什么。
我在下面關注的主線是:
if(defined($ 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;
}
?>
使用getElementsByTagName
,這始終返回DOMNodeList。 最主要的是檢查節點列表是否包含0個元素。
因此,而不是isset()
defined()
或isset()
,請使用->length
...
$nodes=$domDocument->getElementsByTagName('book') ;
if ($nodes->length==0) {
// no results
}
(示例來自http://php.net/manual/en/domdocument.getelementsbytagname.php )
奈傑爾是對的,使用-> length是實現此目的的方法。
if($item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->length > 0){
$image = $item->getElementsByTagNameNS('http://search.yahoo.com/mrss/', 'content')->item(0)->getAttribute('url');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.