Php 使用简单HTMLDOM只能找到第一个表
所以我使用简单的HTMLDOM,从我的表中读取所有id 我的桌子如下所示:Php 使用简单HTMLDOM只能找到第一个表,php,html,simple-html-dom,Php,Html,Simple Html Dom,所以我使用简单的HTMLDOM,从我的表中读取所有id 我的桌子如下所示: xxxxxxxxx标题xxxxxxxxxxxxxxxxxxxxxxx SWxxxxxxxxxx SW XXXXXXXXX标题XXXXXXXXXXXXXxxxxxxxxxx SWxxxxxxxxxx SW 第行中传递给find()方法的第二个参数$table=$html->find('table',0)告诉这个方法只返回第一个找到的元素(第二个参数是结果数组中元素的索引),所以基本上要求findmethod只返回第一个表
xxxxxxxxx标题xxxxxxxxxxxxxxxxxx
xxxxx SW
xxxxx
xxxxx SW
XXXXXXXXX标题XXXXXXXXXXXXXxxxxx
xxxxx SW
xxxxx
xxxxx SW
第行中传递给find()
方法的第二个参数$table=$html->find('table',0)
告诉这个方法只返回第一个找到的元素(第二个参数是结果数组中元素的索引),所以基本上要求find
method只返回第一个表。为了避免这种情况,您需要省略第二个参数。大概是这样的:
$html=file_get_html('../Test/reqID/htmlfileID.html');
//$tables将是所有找到的表的数组
$tables=$html->find('table');
//您还需要遍历所有表
foreach($tables作为$table){
foreach($table->find('tr')作为$row){
如果(是数字($row->find('td',0)->纯文本)){
$reqIDs[]=$row->find('td',0)->纯文本;
}
}
}
为什么在“$html->find('table',0);”中添加0。因此,我认为它只选择第一个表。请避免将代码(HTML部分)作为图像。它将阻止读者使用与您相同的输入运行您的代码,因此他们无法提供帮助。谢谢@Nima,但它为什么会在表4中间停止?仍然有一些id为的表,在问题的编辑字段中写了一些。@Nalinnishan这并不意外。所需的更改非常小,两个人可能会想出相同的解决方案:)我将其更改为$tables=$html->find('table')
,但它仍然停留在表4上。@Mads他已经告诉你一个逻辑并做了一些实验。。我认为问题是因为您再次在$row->find('td',0)
中使用了0,这意味着您只选择了第一行。删除0并对每一行使用foreach。但我只需要td中的0,td中的所有其他内容都不是我需要的。我只是不明白为什么在读表4中的id时会“粗鲁”,然后不读表4后面的id。