2011-06-28 116 views
0

這裏有一些代碼,如何獲得div[class=title]和最近的<p>內容?我只知道如何獲得div[class=title]的foreach,但不知道如何獲得p。謝謝。php簡單的html DOM問題

<?php 
header("Content-type: text/html; charset=utf-8"); 
require_once("simple_html_dom.php"); 
?> 
<?php 
$str = <<<ETO 
<div id="content"> 
<div class="title"><p>text1</p></div> 
<p>destriction1</p> 
<p>destriction2</p> 
<div class="title"><p>text2</p></div> 
<p>destriction3</p> 
<p>destriction4</p> 
<p>destriction5</p> 
<div class="title"><p>text3</p></div> 
<p>destriction6</p> 
<p>destriction7</p> 
</div> 
ETO; 
$html = str_get_html($str); 
foreach($html->find("div[class=title]") as $content){ 
    echo $content.'<hr />'; 
} 
?> 

我要像輸出:

text1 
destriction1 
destriction2 
------------------------------ 
text2 
destriction3 
destriction4 
destriction5 
------------------------------ 
text3 
destriction6 
destriction7 
------------------------------ 

回答

3

你試過像div[class=title] p選擇?

$html = str_get_html($str); 
foreach($html->find("div[class=title] p") as $content){ 
    echo $content.'<hr />'; 
} 

孩子()函數也應該工作(如下圖所示)

,將讓你在每個標題div的,<p>,雖然不是下面的段落。要做到這一點,請使用next_sibling() function。這樣的事情:

$html = str_get_html($str); 
foreach($html->find("div[class=title]") as $content){ 
    // $content = <div class="title">. first_child() should be the <p> 
    echo $content->first_child().'<hr />'; 

    // Get the <p>'s following the <div class="title"> 
    $next = $content->next_sibling(); 
    while ($next->tag == 'p') { 
     echo $next.'<hr />'; 
     $next = $next->next_sibling(); 
    } 
} 
+0

太好了,謝謝你的最佳教導。 –