PHP:Simple Dom 解析器找到第 N 个元素 Class 存在
PHP:Simple Dom Parser Find Nth Element Class Exist
我正在使用 PHP 简单 DOM 解析器来解析 HTML 页面,现在我缺少如何找到第 n 个元素的具体要点 class应该是一个特定的 class
例如:
<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>
table 看起来像这样,所以我正在通过 tr
遍历 table
foreach ($demo->find("tr") as $val)
{
if(is_object($val->find('td.null', 0))
{
echo "FOUND";
}
}
但是上面的foreach循环returns "FOUND" if td.null存在。
但是我需要找到第二个元素 td class 是否为 null 我需要 return 作为两个,如果第三个 td 元素 class 为空我需要 return 作为三个
我希望你明白我的要求,所以请帮助我如何找到第 n 个元素 class 是 null
首先,我要做的也是通过 foreach 迭代每个 td
。这样你就可以得到它属于哪个索引号键。 (请注意,当然它的索引是从零开始的,所以它实际上从 0
开始)。
然后在内层循环中,只要检查class是否为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
。在第二行 table 内,null
落在第三行,在第三行内它落在第二行。
使用简单的 html dom 做这样的事情很痛苦,如果你切换到 this one 你将能够做这样的事情:
foreach($demo->find("td.null") as $td){
echo $td->index;
}
以及您在现代解析库中期望的许多其他 jquery 风格的东西。
我正在使用 PHP 简单 DOM 解析器来解析 HTML 页面,现在我缺少如何找到第 n 个元素的具体要点 class应该是一个特定的 class
例如:
<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>
table 看起来像这样,所以我正在通过 tr
遍历 tableforeach ($demo->find("tr") as $val)
{
if(is_object($val->find('td.null', 0))
{
echo "FOUND";
}
}
但是上面的foreach循环returns "FOUND" if td.null存在。 但是我需要找到第二个元素 td class 是否为 null 我需要 return 作为两个,如果第三个 td 元素 class 为空我需要 return 作为三个
我希望你明白我的要求,所以请帮助我如何找到第 n 个元素 class 是 null
首先,我要做的也是通过 foreach 迭代每个 td
。这样你就可以得到它属于哪个索引号键。 (请注意,当然它的索引是从零开始的,所以它实际上从 0
开始)。
然后在内层循环中,只要检查class是否为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
。在第二行 table 内,null
落在第三行,在第三行内它落在第二行。
使用简单的 html dom 做这样的事情很痛苦,如果你切换到 this one 你将能够做这样的事情:
foreach($demo->find("td.null") as $td){
echo $td->index;
}
以及您在现代解析库中期望的许多其他 jquery 风格的东西。