从 table 中获取行和单元格
Grab rows and then cells from a table
我正在使用 Simple HTML Dom Parser 抓取一个 table(在图像中),然后抓取每个 tr
。这会将行中的所有项目输出为一个字符串。
$contents = $html->find('div[class=product-table]', 0);
$titles = $contents->find('tr');
如何创建一个数组,使数据保持在行中,同时允许我输出单个单元格?我希望能够说连续有 7 个单元格(这可能是灵活的)并且能够将行中的每个单独的单元格输出为变量(我需要用这些做其他事情)。
// Product Code Titles
$contents = $html->find('div[class=product-table]', 0);
$data = array();
$rows = $contents->find('tr');
$counter = 1;
foreach ($rows as $key_row => $row) {
// process rows here
foreach ($row->find('td') as $key_cell => $cell) {
$field_key = "field_5ae0882f9d6f9";
$data[] = array(
"column_title" => strip_tags($cell->innertext),
);
$counter++;
// process each cell on the current row iteration
// or whatever you need to do in each cell (calculations and whatnot)
// $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
}
} ?>
<pre>
<?php print_r($data); ?>
</pre>
<?php update_field( $field_key, $data, $post_id );
就像我在评论中所说的那样,对行处理第一个循环,对每一行,对每个单元格处理另一个 foreach。所以基本上你需要两个。
没有太多要继续的内容,因为您没有示例标记,但我的想法是:
$data = array();
$rows = $contents->find('tr');
foreach ($rows as $key_row => $row) {
// process rows here
foreach ($row->find('td') as $key_cell => $cell) {
// process each cell on the current row iteration
echo $cell->innertext;
// or whatever you need to do in each cell (calculations and whatnot)
// $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
}
}
旁注:请注意,如果您想跳过 header,只需使用一个计数器和一个 if 条件并继续,那么您就可以开始了。
我正在使用 Simple HTML Dom Parser 抓取一个 table(在图像中),然后抓取每个 tr
。这会将行中的所有项目输出为一个字符串。
$contents = $html->find('div[class=product-table]', 0);
$titles = $contents->find('tr');
如何创建一个数组,使数据保持在行中,同时允许我输出单个单元格?我希望能够说连续有 7 个单元格(这可能是灵活的)并且能够将行中的每个单独的单元格输出为变量(我需要用这些做其他事情)。
// Product Code Titles
$contents = $html->find('div[class=product-table]', 0);
$data = array();
$rows = $contents->find('tr');
$counter = 1;
foreach ($rows as $key_row => $row) {
// process rows here
foreach ($row->find('td') as $key_cell => $cell) {
$field_key = "field_5ae0882f9d6f9";
$data[] = array(
"column_title" => strip_tags($cell->innertext),
);
$counter++;
// process each cell on the current row iteration
// or whatever you need to do in each cell (calculations and whatnot)
// $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
}
} ?>
<pre>
<?php print_r($data); ?>
</pre>
<?php update_field( $field_key, $data, $post_id );
就像我在评论中所说的那样,对行处理第一个循环,对每一行,对每个单元格处理另一个 foreach。所以基本上你需要两个。
没有太多要继续的内容,因为您没有示例标记,但我的想法是:
$data = array();
$rows = $contents->find('tr');
foreach ($rows as $key_row => $row) {
// process rows here
foreach ($row->find('td') as $key_cell => $cell) {
// process each cell on the current row iteration
echo $cell->innertext;
// or whatever you need to do in each cell (calculations and whatnot)
// $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
}
}
旁注:请注意,如果您想跳过 header,只需使用一个计数器和一个 if 条件并继续,那么您就可以开始了。