如何使用PHP中的DOM遍历和获取HTML中的特定标记?

时间:2013-10-31 08:09:37

标签: php html dom simple-html-dom

我在PHP中使用SimpleHTMLDom库,我可以从HTML数据中获取节点。 例如,我有一个html数据如下:

<html>
<body>
<table>
<tr>
<td>One</td>
<td>Two</td>
<td>Three</td>
</tr>
</table>
</body>
<html>

我正在使用解析代码:

foreach($html->find('td') as $element)
echo $element->plaintext . '<br>'; 

但是这段代码的结果如下:

One<br/>
Two<br/>
Three<br/>

我想要的是我希望结果“One”在变量$ 1中,“Two”在$ 2中,“Three”在$ 3中。 问题是如何在特定变量中获取特定的表列元素。无论身份证或班级,我都想横穿。就像我想要在HTML数据中第3次出现标记一样。谢谢。 SIMPLEHTMLDOM.sourceforge.com手册是不可理解的。

2 个答案:

答案 0 :(得分:2)

find()方法接受第二个可选参数:元素的索引

echo $html->find('td', 2);

输出:

  

nb1:如果设置了 index ,则返回第N个元素对象,否则返回对象数组。

nb2:参数为零,表示第一个元素的索引为0

您还可以使用该数组访问您的元素:

$elements = $html->find('td');
echo $elements[2];

输出:

  

doc:http://simplehtmldom.sourceforge.net/manual_api.htm

答案 1 :(得分:1)

echo getElementByIndex(3); //whatever element you are looking for.

function getElementByIndex($indexOfElement) {
    $i = 1; //or 0 depending on starting list index
    foreach($html->find('td') as $element) {
        $i++;
        if ($i == $indexOfElement)
        return $element->plaintext . '<br>';
    } 
}
相关问题