>백엔드 개발 >PHP 튜토리얼 >PHP 정규식 실행: HTML 테이블 데이터 일치

PHP 정규식 실행: HTML 테이블 데이터 일치

WBOY
WBOY원래의
2023-06-22 12:17:12973검색

HTML 테이블은 웹 개발의 일반적인 요소입니다. PHP 정규 표현식을 사용하면 테이블의 데이터를 쉽게 추출할 수 있습니다. 이 기사에서는 HTML 테이블 데이터 일치에 PHP 정규 표현식을 실제로 적용하는 방법을 소개합니다.

  1. HTML 테이블의 기본 지식

HTML 테이블은 행과 열로 구성됩니다. 가장 바깥쪽 레이블은 a34de1251f0d9fe1e645927f19a896e8로 표시되며, 각 열은 0f2d6b6549b1008808c133931ec1a1c9 label. , 아래와 같이 표시됩니다.

<table>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>
  <tr>
    <td>4</td>
    <td>5</td>
    <td>6</td>
  </tr>
  <tr>
    <td>7</td>
    <td>8</td>
    <td>9</td>
  </tr>
</table>

위의 HTML 코드는 3개의 행과 3개의 열이 있는 테이블을 나타냅니다. 여기서 첫 번째 행에는 3개의 열 1, 2, 3이 있고 두 번째 행에는 3개의 열 4, 5가 있습니다. 및 6, 세 번째 행에는 7, 8, 9 세 개의 열이 있습니다.

  1. 테이블 데이터 추출

HTML 테이블에서 데이터를 추출하려면 먼저 PHP의 file_get_contents() 함수 또는 컬 라이브러리를 사용하여 웹 페이지 소스 코드를 읽은 다음 정규식을 사용하여 테이블의 데이터를 일치시켜야 합니다. HTML 테이블. 다음 코드는 웹 페이지에서 테이블 데이터를 추출하는 기본 단계를 보여줍니다.

$html = file_get_contents('http://example.com/table.html');  // 获取网页源代码
$pattern = '/<table.*?>.*?</table>/s';  // 匹配table标签及内部内容
preg_match($pattern, $html, $matches);  // 执行正则表达式匹配

if (!empty($matches[0])) {  // 如果匹配结果不为空
  // 从匹配结果中提取表格数据
  $data_pattern = '/<tr.*?>.*?</tr>/s';  // 匹配行标签及内部内容
  preg_match_all($data_pattern, $matches[0], $data_matches);  // 执行正则表达式匹配
  foreach ($data_matches[0] as $row) {  // 遍历匹配结果中的每一行
    $cell_pattern = '/<td.*?>.*?</td>/s';  // 匹配列标签及内部内容
    preg_match_all($cell_pattern, $row, $cell_matches);  // 执行正则表达式匹配
    foreach ($cell_matches[0] as $cell) {  // 遍历每一列
      $text = strip_tags($cell);  // 去除HTML标签,只保留文本内容
      echo $text . ' ';  // 输出每一列的文本内容
    }
    echo "
";  // 换行
  }
}

위 코드는 HTML 테이블에서 데이터를 성공적으로 추출하고 각 행의 내용을 출력할 수 있습니다. 실제 응용 프로그램에서는 테이블 데이터를 데이터베이스에 저장하는 등 필요에 따라 테이블 데이터를 추가로 처리할 수 있습니다.

  1. 정규식 최적화

위 코드에 사용된 정규식은 HTML 테이블 데이터를 성공적으로 일치시킬 수 있지만 효율성이 떨어집니다. 대용량 웹페이지나 테이블 데이터의 양이 많은 웹페이지를 처리할 경우 매칭 효율성을 높이기 위해 정규식 최적화가 필요합니다.

다음은 몇 가지 일반적인 정규식 최적화 팁입니다.

  • 일치 패턴으로 .*?를 사용하지 말고 특정 태그 이름이나 속성 이름을 사용해 보십시오.
  • 탐욕적이지 않은 일치(예: .*?)를 사용하는 경우 가능하면 두 개의 특정 태그나 속성 이름 사이에 배치하지 마세요.
  • 중복된 괄호 캡처를 방지하려면 비캡처 그룹화에 (?:)를 사용하세요.
  • 정규식에서 역참조(예: )를 사용하지 마세요. 정규식 엔진이 역추적 작업을 수행하여 일치 효율성에 영향을 미치기 때문입니다.
  1. 요약

PHP 정규식은 HTML 테이블 데이터를 쉽게 추출할 수 있으며 웹 크롤러, 데이터 마이닝 및 기타 분야에서 뛰어난 응용 가치를 갖습니다. 실제 적용에서는 효율성과 유지 관리성을 향상시키기 위해 정규식 최적화에 주의를 기울여야 합니다.

위 내용은 PHP 정규식 실행: HTML 테이블 데이터 일치의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.