Wenn Sie PHP zum Verarbeiten von HTML-Seiten verwenden und alle Tabellendaten von der Seite abrufen müssen, können Sie reguläre Ausdrücke verwenden. In diesem Artikel erfahren Sie, wie Sie reguläre PHP-Ausdrücke verwenden, um alle Tabellen in HTML abzugleichen.
1. Verstehen Sie die Struktur von Tabellen in HTML
Wenn Sie reguläre Ausdrücke verwenden, um Tabellen in HTML abzugleichen, müssen wir zunächst die Struktur von Tabellen in HTML verstehen. Eine einfache HTML-Tabelle enthält normalerweise die folgenden Teile:
<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. Verwenden Sie reguläre PHP-Ausdrücke, um Tabellen in HTML abzugleichen.
Mit einem Verständnis der HTML-Tabellenstruktur können wir reguläre PHP-Ausdrücke verwenden, um die gesamte Tabellenstruktur, die spezifischen, abzugleichen Die Schritte sind wie folgt:
file_get_contents()
, um den Quellcode der HTML-Seite abzurufen und ihn in einer String-Variablen zu speichern. $url = 'http://www.example.com/'; // HTML 页面的 URL 地址 $html = file_get_contents($url); // 获取 HTML 页面的源代码
file_get_contents()
函数获取 HTML 页面的源代码,并将其保存在字符串变量中。preg_match_all('/<table[^>]*>(.*?)</table>/is', $html, $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 ); }
上述正则表达式中,/<table[^>]*>(.*?)</table>/is
是用于匹配 HTML 表格的正则表达式。其中,<table[^>]*>
匹配 <table>
开始标签;(.*?)
匹配中间的所有内容;</table>
匹配 <table>
结束标签,/is
表示正则表达式中的 .
可以匹配任意字符(包括换行符),*
表示匹配零个或多个前面的字符。
$table_arr
,获取其中每个表格的内容,并进一步解析出其中的各个数据项。上述代码中,通过正则表达式匹配出每个表格的表头、表主体和表尾,然后再使用正则表达式来匹配其中的数据。注意,由于每个表格的数据是不同的,所以在匹配表身和表尾数据时需要使用 foreach
Verwenden Sie reguläre Ausdrücke, um alle Tabellen in HTML abzugleichen und sie in Array-Variablen zu speichern. rrreee
/<table[^>]*>(.*?)</table>/is
als regulärer Ausdruck verwendet Ausdruck, der mit HTML-Tabellen übereinstimmt. Unter diesen stimmt <table[^>]*>
mit dem <table>
Start-Tag überein; (.*?)
stimmt überein das mittlere Tag Alle Inhalte; </table>
entspricht dem schließenden Tag <table>
und /is
steht für . mit jedem Zeichen (einschließlich Zeilenumbrüchen) übereinstimmen. <code>*
bedeutet, dass kein oder mehr vorherige Zeichen übereinstimmen.
$table_arr
, erhalten Sie den Inhalt jeder Tabelle und analysieren Sie jedes Datenelement weiter. Im obigen Code werden die Kopf-, Haupt- und Fußzeilen jeder Tabelle durch reguläre Ausdrücke abgeglichen, und dann werden die regulären Ausdrücke zum Abgleichen der Daten verwendet. Beachten Sie, dass Sie, da die Daten jeder Tabelle unterschiedlich sind, eine foreach
-Schleife verwenden müssen, um beim Abgleichen von Tabellenhaupt- und Tabellenfußdaten Zeile für Zeile zu verarbeiten.
Das obige ist der detaillierte Inhalt vonReguläre PHP-Ausdrücke: Wie alle Tabellen in HTML abgeglichen werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!