为什么find('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行。抓住单词说"嗨"。
我看到两个一个问题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>
存在wrong indexing
,因为您没有正确关闭tr tags
链接应该在第一个索引上,而不是在第零个索引上
$Link = $element->find('tr')[1]->find('td')[4]->find('a')[0];
到print
嗨尝试
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();
}
如果以上不起作用,则在类似的tbody
中查找tr
$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>';
}