2014-11-11 3 views
0

div의 :간단한 HTML DOM 파서 긁어 나는 다음과 같은 구조를 가지고 페이지에서 간단한 HTML DOM 파서로 일부 데이터를 긁어하려고

<div class='image'> 
     <img class='a' src='1.jpg'> 
    </div> 
    <div class='data'> 
     lorem ipsum 1 
    </div> 
    <div class='data'> 
     lorem ipsum 2 
    </div> 
    <div class='data'> 
     lorem ipsum 3 
    </div> 

    <div class='image'> 
     <img class='a' src='2.jpg'> 
    </div> 
    <div class='data'> 
     lorem ipsum 4 
    </div> 

    <div class='image'> 
     <img class='a' src='3.jpg'> 
    </div> 
    <div class='data'> 
     lorem ipsum 5 
    </div> 
     <div class='data'> 
      lorem ipsum 6 
     </div> 

내가 쉽게 모든 데이터를 얻을 수 있습니다. 내 문제는 이미지를 아래의 데이터 div와 연결할 수 없다는 것입니다. 데이터 5,6-

수와 데이터 4 화상 3.JPG 2 화상 2.JPG, I 데이터 1 화상 1.JPG 연결해야

(div를 중첩하지 않은) 이미지 div 간의 div 수는 무작위입니다.

클래스 이미지가 포함 된 두 div 간의 div 수를 중첩하지 않은 방법으로 계산할 수 있습니까?

질문이 복잡해 보이면 사과드립니다. 신중하게 검토하면 질문이 매우 간단합니다.

답변

2

루프 (foreach)를 사용하여 시퀀스를 검사 할 수 있습니다. div에 이미지 클래스가 있는지 확인하고, 그룹화 키를 증가 시키거나, 현재 키를 사용하여 데이터를 내부로 밀어 넣습니다.

거친 예 :

$data = array(); 
$html = str_get_html($html_markup); 
$current_key = 0; 
foreach ($html->find('div') as $div) { 
    if($div->class == 'image') { 
     $current_key++; 
     $data[$current_key]['image'] = $div->find('img', 0)->src; 
    } 

    if($div->class == 'data') { 
     $data[$current_key]['data'][] = $div->innertext; 
    } 
} 

echo '<pre>'; 
print_r($data); 

데이터는 다음과 같이 분류한다 : 그것은 아름다운 일

Array 
(
    [1] => Array 
    (
     [image] => 1.jpg 
     [data] => Array 
     (
      [0] =>  lorem ipsum 1 
      [1] =>  lorem ipsum 2 
      [2] =>  lorem ipsum 3 
     ) 
    ) 

    [2] => Array 
    (
     [image] => 2.jpg 
     [data] => Array 
     (
      [0] =>  lorem ipsum 4 
     ) 
    ) 

    [3] => Array 
    (
     [image] => 3.jpg 
     [data] => Array 
     (
      [0] =>  lorem ipsum 5 
      [1] =>  lorem ipsum 6 
     ) 

    ) 
) 
+0

. 너는 위대하다 – manolish

+0

@manolish 다행이 도움이된다. – Ghost

관련 문제