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 页面的源代码
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
정규식을 사용하여 HTML의 모든 테이블을 일치시키고 배열 변수에 저장하세요. rrreee
/<table>가 사용되었습니다. HTML 테이블과 일치하는 표현식. 그 중 <table[^>]*>
는 <table> 시작 태그와 일치합니다. 중간 태그 모든 콘텐츠 </table>
는 <table> 닫는 태그와 일치하고 /is
는 를 나타냅니다.는 모든 문자(개행 문자 포함)와 일치할 수 있으며, <code>*
는 0개 이상의 이전 문자와 일치함을 의미합니다.
배열 변수 $table_arr
를 탐색하고, 각 테이블의 내용을 얻고, 각 데이터 항목을 추가로 구문 분석합니다.
rrreee위 코드에서는 각 테이블의 머리글, 본문, 바닥글을 정규식으로 일치시킨 후 정규식을 사용하여 데이터를 일치시킵니다. 테이블마다 데이터가 다르기 때문에 테이블 본문과 테이블 바닥글 데이터를 일치시킬 때 행 단위로 처리하려면 foreach
루프를 사용해야 합니다.
🎜3. 요약🎜🎜위 단계를 통해 PHP 정규식을 사용하여 HTML의 모든 테이블을 일치시키고 데이터를 배열 변수에 저장할 수 있습니다. 물론 HTML 테이블 구조의 복잡성으로 인해 정규식을 사용하여 데이터를 일치시키는 데 일부 부정확성이 있을 수 있으므로 실제 상황에 따라 조정해야 합니다. 🎜
</table>
</table>
</table>위 내용은 PHP 정규 표현식: HTML의 모든 테이블을 일치시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!