0

这是一些代码,如何获取div[class=title]最接近的<p>内容?我只知道如何div[class=title]在 foreach 中获取,但不知道如何获取p. 谢谢。

<?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
------------------------------
4

1 回答 1

3

你试过像这样的选择器div[class=title] p吗?

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

children() 函数也应该可以工作(如下所示)

这将使您获得<p>每个标题 div 中的内容,尽管不是以下段落。为此,请使用next_sibling() 函数。像这样的东西:

$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();
    }
}
于 2011-06-28T14:07:18.763 回答