Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ungkapan Biasa PHP: Bagaimana untuk memadankan semua jadual dalam HTML

Ungkapan Biasa PHP: Bagaimana untuk memadankan semua jadual dalam HTML

WBOY
WBOYasal
2023-06-23 09:21:321261semak imbas

Apabila menggunakan PHP untuk memproses halaman HTML, jika anda perlu mendapatkan semua data jadual daripada halaman, anda boleh menggunakan ungkapan biasa untuk mencapai ini. Artikel ini akan menunjukkan kepada anda cara menggunakan ungkapan biasa PHP untuk memadankan semua jadual dalam HTML.

1. Fahami struktur jadual dalam HTML

Apabila menggunakan ungkapan biasa untuk memadankan jadual dalam HTML, kita perlu memahami struktur jadual dalam HTML terlebih dahulu. Jadual HTML asas biasanya mengandungi bahagian berikut:

<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. Gunakan ungkapan biasa PHP untuk memadankan jadual dalam HTML

Dengan pemahaman tentang struktur jadual HTML, kita boleh menggunakan ungkapan Biasa PHP untuk sepadan dengan struktur keseluruhan jadual, langkah khusus adalah seperti berikut:

  1. Gunakan fungsi PHP file_get_contents() untuk mendapatkan kod sumber halaman HTML dan simpannya dalam pembolehubah rentetan.
$url = 'http://www.example.com/';     // HTML 页面的 URL 地址
$html = file_get_contents($url);      // 获取 HTML 页面的源代码
  1. Gunakan ungkapan biasa untuk memadankan semua jadual dalam HTML dan simpannya dalam pembolehubah tatasusunan.
preg_match_all('/<table[^>]*>(.*?)</table>/is', $html, $table_arr);

Antara ungkapan biasa di atas, /4f8b7a22edf23d5bf38996387821347e]*>(.*?)f16b1740fad44fb09bfe928bcc527e08/is ialah ungkapan biasa yang digunakan untuk memadankan jadual HTML. Antaranya, 4f8b7a22edf23d5bf38996387821347e]*> sepadan dengan f5d188ed2c074f8b944552db028f98a1 teg permulaan; (.*?) sepadan dengan semua yang ada di tengah; (termasuk aksara baris baharu), f16b1740fad44fb09bfe928bcc527e08 bermaksud sepadan dengan sifar atau lebih aksara sebelumnya. f5d188ed2c074f8b944552db028f98a1/is.Lintas pembolehubah tatasusunan *, dapatkan kandungan setiap jadual dan huraikan setiap item data dengan lebih lanjut.

    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
        );
    }
  1. Dalam kod di atas, pengepala, kandungan dan pengaki setiap jadual dipadankan dengan ungkapan biasa, dan kemudian ungkapan biasa digunakan untuk memadankan data. Ambil perhatian bahawa memandangkan data setiap jadual adalah berbeza, anda perlu menggunakan gelung $table_arr untuk memprosesnya baris demi baris apabila memadankan badan jadual dan data pengaki jadual.
3. Ringkasan

foreachMelalui langkah di atas, kita boleh menggunakan ungkapan biasa PHP untuk memadankan semua jadual dalam HTML dan menyimpan data dalam pembolehubah tatasusunan. Sudah tentu, disebabkan oleh kerumitan struktur jadual HTML, mungkin terdapat beberapa ketidaktepatan dalam menggunakan ungkapan biasa untuk memadankan data di dalamnya, dan ia perlu diselaraskan mengikut situasi sebenar.

Atas ialah kandungan terperinci Ungkapan Biasa PHP: Bagaimana untuk memadankan semua jadual dalam HTML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn