идентификатор доступа/атрибут GUID isPermaLink

Я использую SimplePie для анализа RSS-каналов в php. Для предварительной обработки результата SimplePie мне нужно знать, является ли ссылка постоянной ссылкой или нет. Информация хранится в этом элементе XML:

<guid isPermaLink="false">FileNr123</guid>

Если $items является экземпляром объекта SimplePie, обозначающим один элемент RSS-канала, я могу использовать $item->get_permalink для получения постоянной ссылки. К сожалению, это возвращает fileName/guid, даже если isPermaLink="false"

Итак, как я могу получить доступ к атрибуту isPermaLink каждого элемента фида для постобработки вывода SimplePie?


person The Bndr    schedule 14.05.2014    source источник
comment
Однако будьте осторожны... Бывают случаи, когда isPermaLink имеет значение true, но ссылка не является ссылкой:/ Наш опыт на Superfeedr заключается в том, что вы всегда должны проверять тип и достоверность данных в фиде!   -  person Julien Genestoux    schedule 14.05.2014
comment
Вы пробовали get_item_tags()?   -  person Revent    schedule 26.05.2014
comment
@revent Да, я сделал. Нашел это за несколько дней до этого. (см. мой ответ) Проблема в том, что некоторые фиды помечают эту ссылку как `isPermaLink=false`, даже если ссылка является действительной. Так что это не просто проблема. это скорее проблема, как провайдер создает rss-канал.   -  person The Bndr    schedule 27.05.2014


Ответы (1)


В качестве опции можно использовать метод get_item_tags для обхода массива и поиска первого isPermaLink:

$guid = $item->get_item_tags('','guid');
$arrIt = new RecursiveIteratorIterator(new RecursiveArrayIterator($guid[0]));
foreach ($arrIt as $sub) {
   $subArray = $arrIt->getSubIterator();
   if (isset($subArray['isPermaLink']) && $subArray['isPermaLink'] == "false") 
       {$isPermalink = false ;break;}
}

Это работает, но неудовлетворительно, потому что некоторые провайдеры RSS устанавливают isPermaLink на false, даже если ссылка работает правильно в течение длительного времени.

person The Bndr    schedule 27.05.2014