Как получить ссылку из RSS-канала?

#php #xml

#php #xml

Вопрос:

Я пытаюсь получить ссылку на публикацию RSS-канала. Я правильно загружаю все сообщения в массив (я успешно повторяю содержимое и другие теги), но у меня проблема с получением ссылки.

В ленте ссылку можно найти двумя способами

1.

 <link rel="alternate" type="text/html" href="this is the address I want" title="here goes the title" />
  

и пытался <?php echo $post->link[href]; ?> , но поскольку в контенте много тегов ссылок, он должен повторять тот, который имеет rel="alternate"

2.

 <feedburner:origLink>this is the address</feedburner:origLink>
  

и попробовал <?php echo $post->feedburner:origLink; ?>

Мой вопрос в том, как получить ссылку? Я предпочитаю 2-й способ, потому что он не проходит по ссылке feedburner.

Примечание: я использую две структуры RSS XML в массиве, поэтому я буду использовать что-то вроде этого

($post->description)?$post->description:$post->content) как я делаю для описания / содержимого

Ответ №1:

1. rel=alternate

 $links = $post->xpath('link[@rel="alternate" and @type="text/html"]');
$link  = (string) $links[0]['href'];
  

Смотрите http://php.net/simplexmlelement.xpath и http://php.net/simplexml.examples-basic (Пример #5)

2. feedburner:origLink

 $links = $post->xpath('feedburner:origLink');
$link = (string) $links[0];
// or
$link = (string) $post->children('feedburner', TRUE)->origLink;
  

Смотрите http://php.net/simplexmlelement.children

Ответ №2:

У меня была такая же проблема, но я решил ее следующим образом:

 $link = $xml->entry[$i]->link[2]->attributes()->href; 
//the feed-blog has 3 type of links
  

где, вероятно $xml $post , для вас.