在使用 PHP 處理 HTML 頁面時,如果需要從頁面中取得所有的表格數據,可以使用正規表示式來實現。本文將介紹如何使用 PHP 正規表示式來符合 HTML 中的所有表格。
一、理解 HTML 中表格的結構
在使用正規表示式來匹配 HTML 中的表格時,我們首先需要了解 HTML 中表格的結構。一個基本的HTML 表格通常包含以下幾個部分:
<table> <!-- 表格开始标签 --> <caption>表格标题</caption> <!-- 表格标题 --> <thead> <!-- 表头开始标签 --> <tr> <!-- 表头行开始标签 --> <th>列名1</th> <!-- 表头第一列 --> <th>列名2</th> <!-- 表头第二列 --> ... </tr> <!-- 表头行结束标签 --> </thead> <!-- 表头结束标签 --> <tbody> <!-- 表格主体开始标签 --> <tr> <!-- 行开始标签 --> <td>数据1</td> <!-- 第一列数据 --> <td>数据2</td> <!-- 第二列数据 --> ... </tr> <!-- 行结束标签 --> ... </tbody> <!-- 表格主体结束标签 --> <tfoot> <!-- 表格尾部开始标签 --> <tr> <!-- 表尾行开始标签 --> <td>统计数据</td> <!-- 表尾第一列数据 --> <td>统计数据</td> <!-- 表尾第二列数据 --> ... </tr> <!-- 表尾行结束标签 --> </tfoot> <!-- 表格尾部结束标签 --> </table> <!-- 表格结束标签 -->
二、使用PHP 正規表示式來匹配HTML 中的表格
有了對HTML 表格結構的了解,我們可以使用PHP正規表示式來符合整個表格的結構,具體步驟如下:
file_get_contents()
函數取得HTML 頁面的原始程式碼,並將其保存在字串變量中。 $url = 'http://www.example.com/'; // HTML 页面的 URL 地址 $html = file_get_contents($url); // 获取 HTML 页面的源代码
preg_match_all('/<table[^>]*>(.*?)</table>/is', $html, $table_arr);
上述正規表示式中,/<table[^>]*>(.*?)</table>/is
是用來匹配HTML 表格的正規表示式。其中,<table[^>]*>
符合<table>
開始標籤;(.*?)
符合中間的所有內容; </table>
符合<table>
結束標籤,/is
表示正規表示式中的.
可以符合任意字符(包括換行符),*
表示符合零個或多個前面的字元。
$table_arr
,取得其中每個表格的內容,並進一步解析出其中的各個資料項目。 foreach ($table_arr[0] as $table_html) { // 解析出每个表格中的表头、表主体、表尾等内容 preg_match_all('/<thead[^>]*>(.*?)</thead>.*?<tbody[^>]*>(.*?)</tbody>.*?<tfoot[^>]*>(.*?)</tfoot>/is', $table_html, $table_content); // 获取表头数据 $thead_html = $table_content[1][0]; // 获取表头 HTML 代码 preg_match_all('/<th[^>]*>(.*?)</th>/is', $thead_html, $thead); // 匹配表头数据 // 获取表身数据 $tbody_html = $table_content[2][0]; // 获取表身 HTML 代码 preg_match_all('/<tr[^>]*>(.*?)</tr>/is', $tbody_html, $tbody_rows); // 匹配每一行数据 foreach ($tbody_rows[1] as $tbody_row_html) { preg_match_all('/<td[^>]*>(.*?)</td>/is', $tbody_row_html, $tbody_row); // 匹配每个单元格 $tbody_data[] = $tbody_row[1]; // 添加每一行的数据到表身数据数组中 } // 获取表尾数据 $tfoot_html = $table_content[3][0]; // 获取表尾 HTML 代码 preg_match_all('/<td[^>]*>(.*?)</td>/is', $tfoot_html, $tfoot); // 匹配表尾数据 $tfoot_data = $tfoot[1]; // 将表格的各个数据保存在其中一个数组中 $table_data[] = array( 'thead' => $thead[1], 'tbody' => $tbody_data, 'tfoot' => $tfoot_data ); }
在上述程式碼中,透過正規表示式來配對每個表格的表頭、表格主體和表尾,然後再使用正規表示式來符合其中的資料。請注意,由於每個表格的資料是不同的,所以在符合表身和表尾資料時需要使用 foreach
迴圈來逐行處理。
三、總結
透過上述步驟,我們可以使用 PHP 正規表示式來匹配 HTML 中的所有表格,並將其中的資料保存在陣列變數中。當然,由於 HTML 表格結構的複雜性,使用正規表示式來匹配其中的資料可能會存在些許不準確性,需要根據實際情況進行調整。
以上是PHP 正規表示式:如何在 HTML 中符合所有的表格的詳細內容。更多資訊請關注PHP中文網其他相關文章!