2014-05-14 6 views
2

SimplePie를 사용하여 PHP의 RSS 피드를 구문 분석합니다. SimplePie의 결과를 사전 처리하려면 링크가 퍼머 링크인지 아닌지를 알아야합니다. [정보]이 XML 요소에 저장됩니다 한 RSS 피드 항목에 대한 의미 SimplePie를 오브제의 인스턴스액세스 ID/GUID 특성 isPermaLink

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

$items 경우에, 나는 영구 링크를 얻을 수 $item->get_permalink를 사용할 수 있습니다. 불행하게도이 경우에도 fileName/guid가 반환됩니다. isPermaLink="false"

SimplePie 출력을 후 처리하려면 모든 피드 항목의 isPermaLink 속성에 어떻게 액세스합니까? 옵션에

+1

주의 ... isPermaLink가 true로 설정되어 있지만 링크가 링크가 아닌 경우가 있습니다./[Superfeedr] (https://superfeedr.com)에서의 경험은 항상 확인해야한다는 것입니다 피드의 데이터 유형 및 유효성! –

+0

[get_item_tags()] (http://simplepie.org/wiki/reference/simplepie_item/get_item_tags)을 사용해 보셨습니까? – Revent

+0

@revent 예, 했어요. 며칠 전에 이것을 발견했습니다. (내 대답을 참조하십시오) 문제는, 일부 피드는 링크가 유효한 링크 인 경우에도 isPermaLink = "false"'로 링크됩니다. 그래서 이것은 단순한 문제가 아닙니다. 더 많은 문제, 어떻게 공급자가 rss 피드를 만듭니다. –

답변

1

배열 물마루 도보 첫 isPermaLink를 검색하기 위해 get_item_tags 방법을 사용하는 것입니다

$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 제공자도 isPermaLinkfalse 설정 bacause, 그렇지 만족입니다 링크가 오랜 시간 동안 올바르게 작동합니다.