简单的HTML dom - 在另一个

时间:2016-03-13 15:38:34

标签: php dom

我正在使用PHP Simple DOM Parser(http://simplehtmldom.sourceforge.net/),

到目前为止,我已经设法用它做了我想做的事情,但是我试图得到第一个元素的一些文本,某个类在另一个元素之上。

我的问题是div不会嵌套在我需要获取信息的区域中。像这样:

<div class="day">Sunday<div>
<div class="game">...</div>
<div class="game">...</div>
...
<div class="day">Monday<div>
<div class="game">...</div>
<div class="game">...</div>
...

每个游戏都有一个标题,时间,频道......所以当我将所有内容收集到我的阵列中时,我希望能够找到第一个class="day"以便将其添加到我的阵列中。

$html->find('h2.time_head')是我目前正在筹备的日子,但我不确定如何才能将其与我的游戏相匹配,因为我得到的是foreach($html->find('div.blockfix') as $div)。{ / p>

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果以上HTML示例是<div class="blockfix">的内容,您可以通过这种方式检索相应的日期:

foreach( $html->find('div.blockfix') as $block )
{
    foreach( $block->find('div.game') as $div )
    {
        $day = $div;
        while( $day = $day->prev_sibling()  )
        {
            if( $day->class == 'day' ) break;
        }
        if( $day ) echo $day->__toString();
        else       echo 'no day found';
    }
}

我离开你的基本foreach,因为我不知道你是否做了其他的事情,但如果你愿意,你可以执行一个独特的foreach:

foreach( $html->find('div.blockfix div.game') as $div )

代码的核心是->prev_sibling()的使用:我们检查当前“游戏”<div>的每个兄弟,直到找到“day”类。