PHP实现双列HTML表格转指定结构的二维关联数组
修正PHP解析HTML表格为指定数组结构的代码
你的核心问题在于原代码逻辑是为多列表头的表格设计的(每行包含多个表头对应的值),但你的表格结构是每行仅包含一组标题(th)和值(td),因此需要调整遍历逻辑,直接按行配对th和td。
修正后的代码
$DOM = new DOMDocument(); $DOM->loadHTML($htmlContent); $result = []; // 获取表格中所有行 $rows = $DOM->getElementsByTagName('tr'); foreach ($rows as $row) { // 获取当前行的th和td元素 $thElement = $row->getElementsByTagName('th')->item(0); $tdElement = $row->getElementsByTagName('td')->item(0); // 确保元素存在再处理 if ($thElement && $tdElement) { $result[] = [ 'name' => trim($thElement->textContent), 'value' => trim($tdElement->textContent) ]; } } print_r($result);
关键改动说明
- 按行遍历而非全局收集元素:直接遍历每个
<tr>,确保每行的th和td一一对应,避免原代码分组逻辑导致的结构错误 - 直接构建目标结构:对每一行,取出th的文本作为
name值,td的文本作为value值,直接生成目标格式的数组并追加到结果中 - 增加存在性检查:避免因表格中存在空行或不完整行导致的报错
运行上述代码后,将得到你期望的结果:
[ ['name' => "test1", 'value' => "test1-1"], ['name' => "test2", 'value' => "test2-2"], ]
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

