从简单的HTML DOM中的特定标记获取第一个元素和第二个元素

时间:2013-03-22 04:18:22

标签: php simple-html-dom

我有两个具有相同类名的div标签: -

HTML:

<div class='random'>
    <div class="name">
        <h1>Title 1</h1>
        <p>Description</p>
    </div>
    <div class="name">
        <h1>Title 2</h1>
        <p>Other Description</p>
    </div>
</div>
<div class='random'>
    <div class="name">
        <h1>Title 2-1</h1>
        <p>Description2</p>
    </div>
    <div class="name">
        <h1>Title 2-2</h1>
        <p>Other Description2</p>
    </div>
</div>
.....
.....

现在我想分别得到两个描述:

  

需要输出1: -
  描述

     

输出2所需: -
  其他描述

     

但我的输出:
  说明
  其他描述

代码:

foreach($html->find('div.name p') as $value)
{
    echo $value->innertext;
}

有没有办法让我们只能指定要打印的第一类或第二类?

5 个答案:

答案 0 :(得分:2)

头等舱:

$html->find('div.name[1] p')

第二课程:

$html->find('div.name[2] p')

答案 1 :(得分:1)

// Find (N)th anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', 0);

// Find lastest anchor, returns element object or null if not found (zero based)
$ret = $html->find('a', -1); 

试试这个。它有帮助!

答案 2 :(得分:0)

PHP Simple HTML DOM Parser Manual

mixed find ( string $selector [, int $index] )  Find children by the CSS selector. Returns the Nth element object if index is set, otherwise, return an array of object.

不要使用循环,而是执行以下操作:

echo "Output 1 desired:-<BR>";
echo $html->find('div.name p', 0) . "<BR>";
echo "Output 1 desired:-<BR>";
echo $html->find('div.name p', 1);

答案 3 :(得分:0)

试试此代码

$count = count($html->find('div.name p'));


 for($index=0; $index<$count; $index++)
{
$text = getElementByIndex($html, $index);
echo "output $index : $text";
}

function getElementByIndex($html,$index)
{
return $html->find('div.name p', $index);
}

希望它可以帮助你..

答案 4 :(得分:0)

只需使用此代码

echo  $htmlEN->find('.name h1', 0)->innertext;
echo  $htmlEN->find('.name p', 0)->innertext;

echo  $htmlEN->find('.name h1', 1)->innertext;
echo  $htmlEN->find('.name p', 1)->innertext;

......