PHP を使用して HTML 内のリンクを解析する

王林
リリース: 2023-06-14 13:10:01
オリジナル
1583 人が閲覧しました

インターネットの急速な発展に伴い、Web サイトの数と規模は拡大し続けています。 Web サイトのアクセシビリティとユーザー エクスペリエンスを向上させるために、多くの場合、Web ページに多数のリンクを追加する必要があります。バッチ処理を必要とする一部の Web サイトでは、リンクを手動でチェックして変更するのは明らかに面倒でエラーが発生しやすい作業です。したがって、PHP を使用して HTML 内のリンクを解析するのが効率的かつ高速な方法になりました。

1. HTML ファイルの取得

まず、PHP で処理する HTML ファイルを取得する必要があります。 PHP では、file_get_contents 関数の使用、fopen と fread の組み合わせによる読み取りなど、HTML ファイルを取得するさまざまな方法が提供されています。ここでは、file_get_contents 関数を使用します。

$filename = 'example.html';
$html = file_get_contents($filename);

2. HTML ファイル内のリンクを解析します

Get HTML ファイル内にあるリンクをできるだけ正確に抽出する必要があります。これに基づいて、正規表現または PHP の組み込み DOM パーサーを使用できます。

  1. リンクを抽出するための正規表現

正規表現を使用してリンクを抽出するには、HTML ページのリンクの基本構造を理解する必要があります。一般的に、HTML ページ内のリンクはタグ付きの特定のテキスト コンテンツで囲まれており、その基本構造は次のとおりです。

リンク テキスト コンテンツ

したがって、正規表現を使用してすべてのリンクを照合できます。具体的なコードは次のとおりです。

$regexp ='1*href=['"]?(2 )';
preg_match_all($regexp, $html, $match);
$link = array_unique($match[1]);

上記のコードは正規表現を使用しています< ; 1*href=['"]?(2) として a タグと照合し、https:// を抽出しますhref 属性 www.php.cn/link/39cec6d4d21b5dade7544dab6881423e。このうち、2 は、一重引用符、二重引用符、スペースを含まない一連の文字と一致することを意味します。最後に、array_unique 関数を使用して、https://www.php.cn/link/39cec6d4d21b5dade7544dab6881423e をすべて重複排除します。

  1. DOM パーサーを使用してリンクを抽出する

PHP に組み込まれた DOM パーサーは、HTML ファイル内のリンクを解析するためのより便利で正確な方法を提供します。 HTML ページをドキュメント オブジェクト モデル (DOM) ツリー構造に変換できるため、ドキュメント ツリーをたどって情報をクエリおよび抽出できます。

具体的なコードは次のとおりです:

$doc = new DOMDocument();
$doc->loadHTML($html);
$links = $doc- >getElementsByTagName ('a');
foreach ($links as $link) {

$href = $link->getAttribute('href');
ログイン後にコピー

}

上記のコードでは、まず DOMDocument を使用して $html 文字列を変換します。を Document Object Model に追加し、 getElementsByTagName('a') メソッドを通じてすべての a タグを取得し、各 a タグを走査して、その href 属性の属性値を抽出します。

3. リンクを処理する

すべてのリンクを取得した後、これらのリンクを処理する必要があります。具体的な処理方法はニーズに応じて異なります。一般的な処理方法は次のとおりです:

  1. replacement

リンクの特定の部分をバッチ変更する必要がある場合があります。リンク http:// プレフィックスを削除します。 str_replace 関数を使用して文字列を置換できます。

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = str_replace('http://', '', $href);
$link->setAttribute('href', $new_href);
ログイン後にコピー

}

  1. Add

すべてのリンクを追加する必要がある場合があります。すべてのリンクの後に utm_campaign=xxx パラメータを追加するなど、特定の文字列またはパラメータ。文字列連結を使用して追加できます。

foreach ($links as $link) {

$href = $link->getAttribute('href');
$new_href = $href . '?utm_campaign=xxx';
$link->setAttribute('href', $new_href);
ログイン後にコピー

}

  1. フィルタリング

特定のリンクをフィルタリングする必要がある場合があります。 、特定の広告リンクなど。 if ステートメントを使用してリンクを判断し、フィルタリングできます。

foreach ($links as $link) {

$href = $link->getAttribute('href');
if (strstr($href, 'ad.')) {
    $link->parentNode->removeChild($link);
}
ログイン後にコピー

}

4. HTML ファイルを保存します

すべてのリンクを処理した後、保存する必要があります結果を HTML ファイルに保存します。 HTML ファイルを読み取るのと同じように、file_put_contents 関数を使用してファイルに書き込みます。

$filename_new = 'example_new.html';
$html_new = $doc->saveHTML();
file_put_contents($filename_new, $html_new);

要約、PHP を使用して HTML 内のリンクを解析することは、効率的で便利なバッチ処理方法です。正規表現または DOM パーサーを通じてリンクを取得し、それらを処理して、最後に HTML ファイルに保存することで、多数のリンクを迅速に更新および変更できます。


    #>
  1. '" >
  2. ##

以上がPHP を使用して HTML 内のリンクを解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート