📜  html 表格到数组 php (1)

📅  最后修改于: 2023-12-03 15:01:17.617000             🧑  作者: Mango

HTML表格到数组PHP

在Web开发中,HTML表格是一种很常见的数据显示方式。但有时候需要将这些表格中的数据以数组形式传递到PHP中进行处理,这时候就需要将HTML表格转换为数组。本篇文章将介绍如何将HTML表格转换为数组,并给出代码示例。

一、HTML表格结构

一个标准的HTML表格结构如下:

<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>20</td>
      <td>男</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>22</td>
      <td>女</td>
    </tr>
    <tr>
      <td>王五</td>
      <td>25</td>
      <td>男</td>
    </tr>
  </tbody>
</table>
二、将HTML表格转换为数组

使用PHP中的DOMDocument和DOMXPath类可以轻松地将HTML表格转换为数组,具体步骤如下:

  1. 创建DOMDocument对象,并将HTML代码加载进去。

    $html = "<table>...</table>";
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    
  2. 创建DOMXPath对象,用于对HTML代码进行查询。

    $xpath = new DOMXPath($dom);
    
  3. 查询表格中的行和列,并将其存储到一个二维数组中。

    $table = array();
    $rows = $xpath->query("//table/tbody/tr");
    $colCount = $xpath->query("//table/thead/tr/th")->length;
    
    foreach ($rows as $row) {
        $rowData = array();
        for ($i = 0; $i < $colCount; $i++) {
            $rowData[] = $xpath->query("td", $row)->item($i)->nodeValue;
        }
        $table[] = $rowData;
    }
    
  4. 现在,$table变量就是转换后的数组了。

三、完整代码示例
<?php
$html = '
  <table>
    <thead>
      <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>张三</td>
        <td>20</td>
        <td>男</td>
      </tr>
      <tr>
        <td>李四</td>
        <td>22</td>
        <td>女</td>
      </tr>
      <tr>
        <td>王五</td>
        <td>25</td>
        <td>男</td>
      </tr>
    </tbody>
  </table>
';

$dom = new DOMDocument();
$dom->loadHTML($html);
 
$xpath = new DOMXPath($dom);
 
$table = array();
$rows = $xpath->query("//table/tbody/tr");
$colCount = $xpath->query("//table/thead/tr/th")->length;
 
foreach ($rows as $row) {
    $rowData = array();
    for ($i = 0; $i < $colCount; $i++) {
        $rowData[] = $xpath->query("td", $row)->item($i)->nodeValue;
    }
    $table[] = $rowData;
}

print_r($table);
?>
四、总结

通过本文的介绍,我们学习了如何将HTML表格转换为数组。希望对大家有所帮助。