#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;
Ответ №2:
У меня была такая же проблема, но я решил ее следующим образом:
$link = $xml->entry[$i]->link[2]->attributes()->href;
//the feed-blog has 3 type of links
где, вероятно $xml
$post
, для вас.