簡體   English   中英

如何檢查PHP中是否存在命名空間元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM