0

我有两个具有相同类名的 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;
}

有什么方法可以让我们只指定要打印的第一类或第二类吗?

4

5 回答 5

4

头等舱:

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

第二类:

$html->find('div.name[2] p')
于 2013-03-22T06:40:16.647 回答
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); 

尝试这个。它有助于!

于 2014-06-18T11:53:46.437 回答
0

PHP 简单 HTML DOM 解析器手册

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);
于 2013-03-22T04:23:00.017 回答
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);
}

希望对你有帮助..

于 2013-03-22T05:11:47.023 回答
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;

……

于 2020-07-04T00:58:22.393 回答