PHP:简单Dom解析器查找第n个元素类是否存在
我正在使用PHP简单DOM解析器来解析HTML页面,现在我缺乏如何找到第n个元素类应该是一个特定类的特定点 例如:PHP:简单Dom解析器查找第n个元素类是否存在,php,html,simple-html-dom,Php,Html,Simple Html Dom,我正在使用PHP简单DOM解析器来解析HTML页面,现在我缺乏如何找到第n个元素类应该是一个特定类的特定点 例如: <table> <tr> <th class="h1">ONE</td> <th class="h2">TWO</td> <th class="h3">THREE</td> </tr> <tr> <td class="one">Apple</td
<table>
<tr>
<th class="h1">ONE</td>
<th class="h2">TWO</td>
<th class="h3">THREE</td>
</tr>
<tr>
<td class="one">Apple</td>
<td class="two">Orange</td>
<td class="null">N/A</td>
</tr>
<tr>
<td class="one">Apple</td>
<td class="null">N/A</td>
<td class="three">Banana</td>
</tr>
</table>
但是如果td.null存在,上面的foreach循环将返回“find”。
但我需要找到,如果第二个元素td类为null,我需要以2的形式返回,如果第三个元素td类为null,我需要以3的形式返回
我希望您能理解我的要求,因此请帮助我如何找到第n个元素类为null。首先,我要做的是通过foreach迭代每个
td
。这样您就可以得到它属于哪个索引号键。(请注意,它的索引当然是从零开始的,因此它实际上从0
开始)
然后在内部循环中,只需检查类是否为null
,然后将其映射到相应的单词1=one,2=two,等等..
粗略的例子:
$map = array(1 => 'one', 2 => 'two', 3 => 'three');
foreach ($demo->find('tr') as $tr) { // loop each table row
// then loop each td
foreach($tr->find('td') as $i => $td) { // indexing starts at zero
if($td->class == 'null') { // if its class is null
echo $map[$i+1]; // map it to its corresponding word equivalent
}
}
}
因此,在这种情况下,这将输出
3个
,然后是2个
。在第二个表格行中,null
落在第三行中,在第三行中它落在第二行中。使用简单的html dom做这样的事情是一件痛苦的事情,如果切换到,您将能够做以下事情:
foreach($demo->find("td.null") as $td){
echo $td->index;
}
以及许多其他jquery风格的东西,这些都是您在现代解析库中所期望的。谢谢您的代码,我在不遍历td@musthafa当然没有问题,我很高兴这是能够得到的想法,我不知道,我们可以检查类的东西像->类,因为我是新的DOM解析器无论如何谢谢Ghost@musthafa是的,您可以在这两种情况下使用它,实际上,
->id
用于属性,->{'data-class'}
您可以使用这些属性访问元素属性。它将与其对象属性相对应
foreach($demo->find("td.null") as $td){
echo $td->index;
}