ホームページ >バックエンド開発 >PHPチュートリアル >PHP 正規表現: HTML 内のすべてのテーブルを照合する方法
PHP を使用して HTML ページを処理する場合、ページからすべてのテーブル データを取得する必要がある場合は、正規表現を使用してこれを実現できます。この記事では、PHP 正規表現を使用して HTML 内のすべてのテーブルと一致する方法を説明します。
1. 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> <!-- 表格结束标签 -->
2. 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);
上記の正規表現では、/4f8b7a22edf23d5bf38996387821347e]*>(.*?)f16b1740fad44fb09bfe928bcc527e08/is
が照合に使用されます。 HTML テーブルの正規表現。このうち、4f8b7a22edf23d5bf38996387821347e]*>
は、f5d188ed2c074f8b944552db028f98a1
開始タグに一致し、(.*?)
は、 middle; f16b1740fad44fb09bfe928bcc527e08
は f5d188ed2c074f8b944552db028f98a1
終了タグに一致し、/is
は正規表現内の .
が一致することを意味します任意の文字 (改行を含む)、# は、先行する 0 個以上の文字と一致することを意味します。
$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
ループを使用して行ごとに処理する必要があることに注意してください。
3. 概要
上記の手順により、PHP 正規表現を使用して HTML 内のすべてのテーブルと一致し、データを配列変数に保存できます。もちろん、HTML テーブル構造は複雑であるため、正規表現を使用してテーブル内のデータを照合する際に不正確な部分が生じる可能性があり、実際の状況に応じて調整する必要があります。
以上がPHP 正規表現: HTML 内のすべてのテーブルを照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。