Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:简单Dom解析器查找第n个元素类是否存在_Php_Html_Simple Html Dom - Fatal编程技术网

PHP:简单Dom解析器查找第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

我正在使用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>
但是如果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;
}