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 に答える