2011-04-11 14 views
0

PHP에서 웹 사이트를 구문 분석하기 전에 DOM을 사용했습니다.HTML 요소 구문 분석

정규식을 사용하여 HTML을 구문 분석해서는 안됩니다.

하지만 ... (나는 shitstorm, 그냥 답변을 시작하지 않으 : P) 내가 예를 들어, 단지 1 개 HTML 요소를 분석하려면

<a href="http://example.com/something?id=1212132131133&filter=true" rel="blebeleble" target="_blank"> 

그리고 href 속성의 콘텐츠를 찾을 수, 나는이 문자열을 구문 분석 DOM을 사용하여 (아마 내가 할 수있는 경우에 필요)하거나 내가 DOM을 사용하여 구문 분석 할 수 있도록 완전한 웹 페이지를 필요합니까 ?

+1

는 DOM 의미하여 무엇을 분석 하는가? –

+0

http://php.net/manual/en/book.dom.php – PeeHaa

답변

3

예, 가능합니다.

에 당신은이 :

  • <a /> 태그는 문서 전체를 구성하는 척;
  • 태그를 닫아야합니다.
  • 입력 문자열이 유효한 XML인지 확인하십시오 (&을 적절한 HTML 항목 인 &amp;으로 바꿨 음).

코드 :

<?php 
$str = '<a href="http://example.com/something?id=1212132131133&amp;filter=true" rel="blebeleble" target="_blank" />'; 

$dom = new DOMDocument(); 
$dom->loadXML($str); 
var_dump($dom->childNodes->item(0)->attributes->getNamedItem('href')->value); 

// Output: string(57) "http://example.com/something?id=1212132131133&filter=true" 
?> 

당신이 링크 텍스트를 포함 할 경우 PS는, 그 너무 괜찮아요 :

$str = '<a href="http://example.com/something?id=1212132131133&amp;filter=true" rel="blebeleble" target="_blank">Click here!</a>'; 
// .. code .. // 

// Output: string(57) "http://example.com/something?id=1212132131133&filter=true" 
+0

정답만. 고마워요 Tomalak! – PeeHaa

+0

좋은 답변, 고마워요. Beautiful Soup이나 Nokogiri에는 문제가 없지만 DomDocument는 사용하기가 어렵습니다. – JAL

0

당신이 그것을 격리했다면 정규 표현식을 단지이 태그를 분석하도록 고칠 수 있습니다. 예는 found here 일 수 있습니다. 자바 용이므로 대소 문자를 구분하지 않는 수정자를 끝까지 변경해야합니다!