ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現: HTML 内のすべてのテーブルを照合する方法

PHP 正規表現: HTML 内のすべてのテーブルを照合する方法

WBOY
WBOYオリジナル
2023-06-23 09:21:321259ブラウズ

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 正規表現を使用して次のことを行うことができます。テーブル全体の構造と一致するようにするには、具体的な手順は次のとおりです。

  1. PHP file_get_contents() 関数を使用して、HTML ページのソース コードを取得し、ファイルに保存します。文字列変数中央。
$url = 'http://www.example.com/';     // HTML 页面的 URL 地址
$html = file_get_contents($url);      // 获取 HTML 页面的源代码
  1. 正規表現を使用して HTML 内のすべてのテーブルを照合し、配列変数に保存します。
preg_match_all('/<table[^>]*>(.*?)</table>/is', $html, $table_arr);

上記の正規表現では、/4f8b7a22edf23d5bf38996387821347e]*>(.*?)f16b1740fad44fb09bfe928bcc527e08/is が照合に使用されます。 HTML テーブルの正規表現。このうち、4f8b7a22edf23d5bf38996387821347e]*> は、f5d188ed2c074f8b944552db028f98a1 開始タグに一致し、(.*?) は、 middle; f16b1740fad44fb09bfe928bcc527e08f5d188ed2c074f8b944552db028f98a1 終了タグに一致し、/is は正規表現内の . が一致することを意味します任意の文字 (改行を含む)、# は、先行する 0 個以上の文字と一致することを意味します。

  1. 配列変数 $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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。