У меня есть XML-канал, который я мог бы получить новости о кипре на новостном сайте. Я хочу использовать новостные изображения и, конечно же, новости.
Вот пример xml
<item> <title>Rumlardan KKTC üniversitelerine ambargo</title> <description> <![CDATA[<p><a href="http://www.ntvmsnbc.com/id/25368624/"> <img align="left" border="0" src="http://img.ruphp.com/php/" alt="" style="margin:0 5px 5px 0" /></a> Kıbrıs Rum yönetimi, KKTC'deki üniversitelerle işbirliği yapan ülkelerin eğitim kurumlarına resmi yazılar göndererek yetkilileri tehdit ediyor. Hindistan üniversitesinden ortak akademik programlara son verilmesi istendi.</p><br clear="all" />]]> </description> <link>http://www.ntvmsnbc.com/id/25368624/</link> <media:content medium="image" url="http://img.ruphp.com/php/"> <media:text> <![CDATA[<p><a href="http://www.ntvmsnbc.com/id/25368624/"> <img align="left" border="0" src="http://img.ruphp.com/php/" alt="" style="margin:0 5px 5px 0" /> </a> </p> <br clear="all" />]]> </media:text> </media:content> <pubDate>Mon, 23 Jul 2012 14:27:32 GMT</pubDate> <category>Haberler</category> <guid isPermaLink="true">http://www.ntvmsnbc.com/id/25368624/</guid> </item>
Ссылка на xml: http://www.ntvmsnbc.com/id/24928068/device/rss/rss.xml
Теперь я проанализирую этот xml с помощью simpleXML с использованием кода ниже. В этом коде я мог бы предотвратить отображение <img>
тегами strip_, которые могли отображать только текстовые данные в CDATA.
Короче говоря, я спрашиваю, как я могу получить media:content url=""
в свой код, поскольку я хочу изменить thumb.jpg на hlarge.jpg в этом URL-адресе.
Я пробовал $d['media'] = $news->media->attributes();
'<p>'.$post['media']['url'].
но он не работает
Вот мой код:
<? $NewsFeedUrl = "http://www.ntvmsnbc.com/id/24928068/device/rss/rss.xml"; $xml = @simplexml_load_file($NewsFeedUrl); if(is_object($xml)){ //Rest of our code will be here }else{ die('Güncel Haberlere Bağlanılamıyor.'); } foreach($xml->channel->item as $news){ if(is_array($newsContent) && count($newsContent)==$amountToShow){ } $description = $news->description; $d['title'] =$news->title; $d['link'] = $news->link; $d['media'] = $news->media->attributes(); $d['cont'] = $news->description; $d['date'] = $news->pubDate; $newsContent[]=$d; } //$ad=array("thumb", "left"); if(is_array($newsContent)){ foreach($newsContent as $post){ echo ' <article class="entry"><h3>'.'<a href="'.$post['link'].' "target="_blank">'.$post['title'].'</a></h3> '.'<div class="meta"><span class="date_post">'.$post['date'].'</span>'.$post['pubDate']. //'<p>'.str_replace($ad,"hlarge",$post['cont']). '<p>'.$post['cont']. '<p>'.strip_tags($post['cont']). //'<p>'.$post['media']['url']. '<p><a href="'.$post['link'].' "target="_blank" class="button">Devamını Oku</a>'. ' </article>'; } }else{ echo '<p>Güncel Haberler Alınamadı Sayfayı Yenilemeyi Deneyin.</p>'; } ?>
Элемент content
имеет префикс пространства имен ( <media:content>
), поэтому к нему нельзя получить доступ обычными средствами.
Namespace-URI для «media» – это http://search.yahoo.com/mrss/
(проверьте свой rss.xml
для «xmlns: media»).
Попробуй это:
foreach ($xml->channel->item as $news) { $ns_media = $news->children('http://search.yahoo.com/mrss/'); echo $ns_media->content; // displays "<media:content>" }
РЕДАКТИРОВАТЬ :
Я думаю, что есть некоторая проблема с пространством имен uri " http://search.yahoo.com/mrss/ "
Я попытался использовать ваш xml:
http://codepad.org/P90bOQUj [не работает]
Я пробовал использовать другой xml:
http://codepad.org/ADYveL6T [рабочий]