Php 如何在没有ID的HTML表中选择特定列?
我使用的是SimpleHTMLDOM,我有两个具有相同列的表,我需要提取列标题 下面是我用来获取所有数据的方法,但现在我只需要选择月份和相应的列标题(一月、二月等)Php 如何在没有ID的HTML表中选择特定列?,php,foreach,web-scraping,simple-html-dom,Php,Foreach,Web Scraping,Simple Html Dom,我使用的是SimpleHTMLDOM,我有两个具有相同列的表,我需要提取列标题 下面是我用来获取所有数据的方法,但现在我只需要选择月份和相应的列标题(一月、二月等) $r_tables=$dom->find('table'); foreach($r_表为$table){ $r_cells=$table->find('td'); foreach($r\u单元格作为$cell){ echo$cell->纯文本。“”; } } 一种简陋的方法是 $i = 0; foreach($r_tables a
$r_tables=$dom->find('table');
foreach($r_表为$table){
$r_cells=$table->find('td');
foreach($r\u单元格作为$cell){
echo$cell->纯文本。“
”;
}
}
一种简陋的方法是
$i = 0;
foreach($r_tables as $table) {
$r_cells = $table->find('td');
foreach($r_cells as $cell) {
if($i == 0) {
echo $cell->plaintext.'<br />';
}
}
$i++;
$i=0;
foreach($r_表为$table){
$r_cells=$table->find('td');
foreach($r\u单元格作为$cell){
如果($i==0){
echo$cell->纯文本。“
”;
}
}
$i++;
}我想你要找的是
$tables = $dom->find('table');
foreach($tables as $table) {
$r_cells = $table->find('tr');
$i = 0;
foreach($r_cells as $row) {
$cell = $row->find('td');
if ($i == 0) {
foreach($cell as $td) {
echo $td.'<br />';
}
}
$i++;
}
}
$tables=$dom->find('table');
foreach($tables作为$table){
$r_cells=$table->find('tr');
$i=0;
foreach($r\u单元格作为$row){
$cell=$row->find('td');
如果($i==0){
foreach($单元格为$td){
echo$td.“
”;
}
}
$i++;
}
}
从第一个表的第一个tr中查找td:
$tds = $dom->find('table', 0)->find('tr', 0)->find('td');
将每个td的文本映射到一个数组中:
$headers = array_map(function($td){return $td->text();}, $tds);
这应该满足您的要求(如果我理解正确):
foreach($r\u表为$table){
$r_cells=$table->find('td');
echo$r_单元格[0]->纯文本。“
”;;
}
你就不能只做echo$r\u单元格[0]->纯文本代码>?(从未使用过SimpleHTMLDom)谢谢@herb。这是可行的,但它也显示了第二行,这是我不想要的。我应该如何删除它并只保留月份行?我需要查看$table->find('td')后面的代码,但我假设$r\u单元格是一个表row@herb你能澄清一下你到底需要看到什么吗?我需要看看$table->find('td')对象方法背后是什么。它是否一次返回一行。我在想,因为在你把它划分成单独的单元之前,你得到了所有你可能试图执行的东西,比如$table->find('tr'),再次感谢@herb。这是可行的,但结果重复了两次。。。这可能是因为我有两个具有相同列名的表吗?另外,如果我想在一个html表中组织所有这些内容,我将如何进行呢?我对此有点陌生,但您能否澄清一下您是如何做到这一点的?它将帮助我找出剩下的。@KPO-是,foreach($tables as$table)行循环遍历页面上的每个表
$headers = array_map(function($td){return $td->text();}, $tds);
foreach($r_tables as $table) {
$r_cells = $table->find('td');
echo $r_cells[0]->plaintext . '<br />';;
}