インターネットの急速な発展に伴い、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 パーサーを使用できます。
正規表現を使用してリンクを抽出するには、HTML ページのリンクの基本構造を理解する必要があります。一般的に、HTML ページ内のリンクはタグ付きの特定のテキスト コンテンツで囲まれており、その基本構造は次のとおりです。
したがって、正規表現を使用してすべてのリンクを照合できます。具体的なコードは次のとおりです。
$regexp ='
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 をすべて重複排除します。
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. リンクを処理する
すべてのリンクを取得した後、これらのリンクを処理する必要があります。具体的な処理方法はニーズに応じて異なります。一般的な処理方法は次のとおりです:
リンクの特定の部分をバッチ変更する必要がある場合があります。リンク http:// プレフィックスを削除します。 str_replace 関数を使用して文字列を置換できます。
foreach ($links as $link) {
$href = $link->getAttribute('href'); $new_href = str_replace('http://', '', $href); $link->setAttribute('href', $new_href);
}
すべてのリンクを追加する必要がある場合があります。すべてのリンクの後に utm_campaign=xxx パラメータを追加するなど、特定の文字列またはパラメータ。文字列連結を使用して追加できます。
foreach ($links as $link) {
$href = $link->getAttribute('href'); $new_href = $href . '?utm_campaign=xxx'; $link->setAttribute('href', $new_href);
}
特定のリンクをフィルタリングする必要がある場合があります。 、特定の広告リンクなど。 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 ファイルに保存することで、多数のリンクを迅速に更新および変更できます。
以上がPHP を使用して HTML 内のリンクを解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。