2010-06-16 3 views
4

주어진 URL에서 제목 태그 및 RSS 피드 주소 (있는 경우)를 가져오고 싶습니다.) 나는 지금까지 전혀 사용하지 않고있다. preg_match와 정규식을 사용하여 제목 태그를 얻을 수 있었지만 RSS 피드 주소를 가져 오는 것만으로는 얻을 수없는 것으로 보입니다.(PHP5) PHP DOM 또는 Regex를 사용하여 HTML에서 제목 태그 및 RSS 피드 주소 추출

내가 참조를 위해 아래에 내 코드를 복사 한 ...

`// 제목 태그 는 preg_match를 가져옵니다 ('@ (($ 웹 콘텐츠는 웹 사이트의 HTML을 보유). *) @ i ', $ webContent, $ titleTagArray);

// If the title tag has been found, assign it to a variable 
if($titleTagArray && $titleTagArray[3]) 
$webTitle = $titleTagArray[3]; 

// Get the RSS or Atom feed address 
preg_match('@<link(.*)rel="alternate"(.*)href="(.*)"(.*)type="application/rss+xml"\s/>@i',$webContent,$feedAddrArray); 

// If the feed address has been found, assign it to a variable 
if($feedAddrArray && $feedAddrArray[2]) 
$webFeedAddr = $feedAddrArray[2];` 

여기 정규식을 사용하는 것이 최선의 방법이 아니라고 읽었습니다. 다행히 누군가가 나에게 손을 줄 수 있습니다 :-)

고마워요.

답변

0

RegExp가 최상의 솔루션에서 멀리 떨어져 있습니다.) 피드 리더, 예를 들어 zend 프레임 워크의 Zend_Feed 클래스를 사용하십시오.

+3

좋은 선택을 RSS 피드 구문 분석. 그는 HTML 페이지를 파싱하고 있습니다. – Gordon

5

한 가지 방법

$dom = new DOMDocument;   // init new DOMDocument 
$dom->loadHTML($html);    // load HTML into it 
$xpath = new DOMXPath($dom);  // create a new XPath 

$nodes = $xpath->query('//title'); // Find all title elements in document 
foreach($nodes as $node) {   // Iterate over found elements 
    echo $node->nodeValue;   // output title text 
} 

의 유형 모든 링크 태그의 href 속성을 얻으려면 "응용 프로그램/RSS + XML"이 XPath를 사용합니다 : 그가 있었다면

$xpath->query('//link[@type="application/rss+xml"]/@href'); 
+1

더 넓은 범위의 피드 유형의 경우 다음과 같이 사용할 수 있습니다. '/ html/head/link [@ rel = "alternate"and @href and (@ type = "application/atom + xml"또는 @ type = "application/rss + xml "또는 @ type ="application/rdf + xml ")]/@ href' - 정규식은 좋지만'or'로 충분합니다 – salathe

관련 문제