2015-01-21 2 views
-5

동일한 클래스 이름과 다른 ID 이름을 가진 여러 div를 포함하는 HTML 콘텐츠를 표시하려고합니다. 나는 다음과 같은 배열 형태로 컨텐츠를 배치 할 :Php get htm div content in array

HTML 콘텐츠 :

<div id='divcont'> 
    <div class='abc'> 
     <P class='first'>test1</p> 
    </div> 
    <div class='abc'> 
     <P class='first_sec'>test2</p> 
    </div> 
</div> 

결과 :

Array 
(
    [0] => <P class='first'>test1</p> 
    [1] => <P class='first_sec'>test2</p> 
) 
+1

? 코드를 보여주십시오. 또한 분석 할 필요가있는 유일한 HTML입니까? 그렇지 않다면 분석해야 할 입력에 대한 규칙은 무엇입니까? –

+0

** 정규식을 사용하여 HTML을 구문 분석하지 마십시오. 올바른 HTML 구문 분석 모듈을 사용하십시오. ** 정규식으로 HTML을 안정적으로 구문 분석 할 수 없으며 슬픔과 좌절을 당할 것입니다. HTML이 예상과 다르게 변경되면 코드가 손상됩니다. http://htmlparsing.com/php 또는 [이 SO 스레드] (http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php)를 참조하십시오. 이미 작성, 테스트 및 디버깅 된 PHP 모듈을 사용하여 HTML을 올바르게 구문 분석하는 방법의 예. –

+0

예, 위의 질문으로 확인해 주시겠습니까 – user2431105

답변

3

당신은 작업에 적합한 tool를 사용하여이 간단한 작업을 달성 할 수있다.

$doc = DOMDocument::loadHTML(" 
<div id='divcont'> 
    <div class='abc'> 
     test1 
    </div> 
    <div class='abc'> 
     test2 
    </div> 
</div> 
"); 

$xpath = new DOMXPath($doc); 
$nodes = $xpath->query('//div[@class="abc"]'); 

foreach ($nodes as $node) { 
    $data[] = trim($node->nodeValue); 
} 

print_r($data); 

출력 지금까지 시도 무엇

Array 
(
    [0] => test1 
    [1] => test2 
) 
+0

안녕하세요, 감사합니다.하지만 HTML 태그를로드 할 수 없습니다. 한 번 질문을 확인해주십시오. – user2431105