ホームページ >バックエンド開発 >PHPチュートリアル >PHP 正規表現の動作: HTML テーブル データの照合

PHP 正規表現の動作: HTML テーブル データの照合

WBOY
WBOYオリジナル
2023-06-22 12:17:12999ブラウズ

HTML テーブルは Web 開発における一般的な要素です。PHP 正規表現を使用すると、テーブル内のデータを簡単に抽出できます。この記事では、HTML テーブル データの照合における PHP 正規表現の実際的な応用例を紹介します。

  1. HTML テーブルの基礎知識

HTML テーブルは行と列で構成されます。最も外側のラベルは f5d188ed2c074f8b944552db028f98a1 で、各行は a34de1251f0d9fe1e645927f19a896e8 を使用します。

タグで表され、各列は次のように表されます:
<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 列のテーブルを表しており、最初の行には 1、2 の 3 つの列があります。 2 行目には 4、5、6 という 3 つの列があり、3 行目には 7、8、9 という 3 つの列があります。

  1. テーブル データの抽出

HTML テーブルからデータを抽出するには、まず PHP の file_get_contents() 関数または Curl ライブラリを使用して Web ページのソース コードを読み取る必要があります。を使用し、正規表現を使用します。式は HTML テーブル内のデータと一致します。次のコードは、Web ページからテーブル データを抽出する基本的な手順を示しています。

$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 テーブル データと正常に一致しますが、効率は低くなります。大規模な Web ページまたは大量のテーブル データを含む Web ページを処理する場合、マッチング効率を向上させるために正規表現の最適化が必要です。

次に、正規表現の最適化に関する一般的なヒントをいくつか示します:

  • .*? を一致パターンとして使用することを避け、一致には特定のタグ名または属性名を使用するようにしてください。
  • 非貪欲一致 (つまり .*?) を使用する場合は、可能であれば 2 つの特定のタグまたは属性名の間にそれを配置しないようにしてください。
  • 冗長な括弧のキャプチャを避けるために、キャプチャしないグループ化には (?:) を使用します。
  • 正規表現で後方参照 ( など) を使用しないでください。正規表現エンジンがバックトラッキング操作を実行し、照合効率に影響を与えるためです。
  1. 概要

PHP 正規表現は、HTML テーブル データを簡単に抽出でき、Web クローラー、データ マイニング、その他の分野で大きな応用価値があります。実際のアプリケーションでは、効率と保守性を向上させるために正規表現の最適化に注意を払う必要があります。

以上がPHP 正規表現の動作: HTML テーブル データの照合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。