我使用的是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>
<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>
该表看起来是这样的,所以我遍历通过TR表
foreach ($demo->find("tr") as $val)
{
if(is_object($val->find('td.null', 0))
{
echo "FOUND";
}
}
但上面的foreach循环返回“发现”如果td.null存在。 但我需要找到,如果第二个元素的TD类为null我需要返回两个,如果第三TD元素类为null我需要返回三
我希望让你明白什么我要求的,所以请帮助我如何找到第n个元素类为null
首先,我会做什么也是每个迭代td
的直通的foreach。 这样你就可以把它分为哪些索引号键。 (请注意,当然它的索引是从零开始因此它实际上开始于0
)。
然后内循环的内部,只检查如果类是null
,则在相应的字映射它1 = one, 2 = two, etc..
。
粗糙的例子:
$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
}
}
}
所以在这种情况下,这将输出three
,然后two
。 第二个表行内部, null
在第三盘,第三行内它的土地入第二。
这是一个痛苦做这样的事情用简单的HTML DOM,如果切换到这一个 ,你就可以做这样的事情:
foreach($demo->find("td.null") as $td){
echo $td->index;
}
还有许多其他的jQuery风格的东西,你会期望在一个现代的解析库。