为什么找到(' tr')[0];获取表格行2而不是表格行1?
这是我的html,所有表都有相同的类和布局。
<table class="tablemenu">
<tbody>
<tr>
<td><b>hello</b></td>
<td><b>hi</b></td>
</tr>
<tr>
<td>hey</td>
<td>Alright</td>
<td>Good</td>
<td>Good</td>
<td><a>Date</a></td>
</tr>
</tbody>
</table>
<table class="tablemenu">
<tbody>
<tr>
<td><b>hello</b></td>
<td><b>hi</b></td>
</tr>
<tr>
<td>hey</td>
<td>Alright</td>
<td>Good</td>
<td>Good</td>
<td><a>Date</a></td>
</tr>
</tbody>
</table>
<table class="tablemenu">
<tbody>
<tr>
<td><b>hello</b></td>
<td><a>hi</a></td>
</tr>
<tr>
<td>hey</td>
<td>Alright</td>
<td>Good</td>
<td>Good</td>
<td><a>LINK</a></td>
</tr>
</tbody>
</table>
这是我的php
<?php
include("simpleHtmlDom/simple_html_dom.php");
$html = new simple_html_dom();
// Load a file
$html->load_file('http://mySite.net/');
foreach($html->find('table[class=tablemenu]') as $element){
$Link = $element->find('tr')[0]->find('td')[4]->find('a')[0];
echo($Link->text());
echo '<br />';
}
?>
首先得到“日期”字样。我试过了
$Link = $element->find('tr')[1]->find('td')[4]->find('a')[0];
但那不起作用,它说未定义索引。
然后我尝试了这只是乱七八糟的工作
$Link = $element->find('tr')[0]->find('td')[4]->find('a')[0];
由于某种原因,这得到了日期。我不明白为什么,我确实需要这个 虽然它有效 - 我现在无法访问表格第1行来获取单词说&#34; hi&#34;。
答案 0 :(得分:1)
我看到两个一个问题 s :
您的第一个<tr>
只有2个<td>
,因此$element->find('tr')[0]->find('td')[4]
应该抛出异常。
编辑 OP固定粘贴代码。
修复你的标记。您没有正确关闭 <tr>
元素:
<table class="tablemenu">
<tbody>
<tr>
<td><b>hello</b></td>
<td><b>hi</b></td>
</tr> <!-- close this! --->
<tr>
<td>hey</td>
<td>Alright</td>
<td>Good</td>
<td><a>Date</a></td>
</tr> <!-- close this! --->
</tbody>
</table>
击> <击> 撞击>
答案 1 :(得分:0)
wrong indexing
因为您未正确关闭tr tags
链接应位于第一个索引而不是第零个索引
$Link = $element->find('tr')[1]->find('td')[4]->find('a')[0];
要print
hi ,请尝试
echo $element->find('tr')[0]->find('td')[1]->find('b')[0]->text();
完整代码
foreach($html->find('table[class=tablemenu]') as $element){
$Link = $element->find('tr')[1]->find('td')[4]->find('a')[0];
echo($Link->text());
echo '<br />';
echo $element->find('tr')[0]->find('td')[1]->find('b')[0]->text();
}
如果上述方法不起作用,请在tr
中找到tbody
$Link = $element->find('tbody')->find('tr')[1]->find('td')[4]->find('a')[0];
同样对于调试,请尝试此
foreach($html->find('table[class=tablemenu]') as $element){
echo '<pre>';
var_dump($element);// find the object here
echo '</pre>';
}