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:
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 页面的源代码
preg_match_all('/<table[^>]*>(.*?)</table>/is', $html, $table_arr);
Antara ungkapan biasa di atas, /<table[^>]*>(.*?)</table>/is
ialah ungkapan biasa yang digunakan untuk memadankan jadual HTML. Antaranya, <table[^>]*>
sepadan dengan <table>
teg permulaan; (.*?)
sepadan dengan semua yang ada di tengah; (termasuk aksara baris baharu), </table>
bermaksud sepadan dengan sifar atau lebih aksara sebelumnya. <table>
/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 ); }
$table_arr
untuk memprosesnya baris demi baris apabila memadankan badan jadual dan data pengaki jadual. foreach
Melalui 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!