Web 開発では、HTML ページ内のリンクを処理する必要があることがよくあります。 PHP 正規表現を使用して HTML ページ内のすべてのリンクを照合するにはどうすればよいですか?ここで私たちはそれを知りに来ました。
HTML ページ内のリンクは通常、 タグを通じて実装されます。このタグに基づいてリンクを照合できます。まず、PHP の file_get_contents() 関数を使用して HTML ページのソース コードを取得する必要があります。例:
$html = file_get_contents('http://www.example.com');
次に、正規表現を使用してすべてのリンクを照合します。以下は、リンクと一致する単純な正規表現です。
$pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/';
この正規表現では、 は、 で始まり、href 属性で始まるリンク タグと一致します。 href="https://www.php.cn/link/2b9bd744f7c0d06123d9d9557310fa80" はリンク アドレスと一致します。括弧は、これがキャプチャ グループであることを示します。つまり、後で $matches 変数を使用して一致結果にアクセスできることを意味します。 >(.?) はリンク テキストに一致し、キャプチャ グループでもあります。
次に、preg_match_all() 関数を使用して、正規表現を HTML ページのソース コードに適用して、すべてのリンクと一致させることができます。
preg_match_all($pattern, $html, $matches);
関数は配列 $matches を返します。$ は一致します。 [0] には一致するすべてのリンクの完全な文字列が含まれます。$matches[1] はリンク アドレスであるキャプチャ グループ 1 に対応し、$matches[2] はリンク テキストであるキャプチャ グループ 2 に対応します。
最後に、リンク アドレス配列である $matches[1] 配列をループして、すべてのリンクのアドレスを取得できます:
foreach ($matches[1] as $link) { echo $link . " "; }
完全なコードは次のとおりです:
$html = file_get_contents('http://www.example.com'); $pattern = '/<a href="https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2">https://www.php.cn/link/d28a3097fa7cf63ad01c4f328314e2f2</a>/'; preg_match_all($pattern, $html, $matches); foreach ($matches[1] as $link) { echo $link . " "; }
注、この正規表現は基本的なリンク形式のみに一致します。例:
<a href="http://www.example.com">Example</a>
リンクに他の属性が含まれている場合、またはラベル形式が基本要件を満たしていない場合は、一致できません。実際のアプリケーションでは、必要に応じて正規表現を変更して、さまざまなリンク形式に適応できます。
要約すると、PHP 正規表現を使用して HTML ページ内のリンクを照合するには、file_get_contents() 関数を使用してページのソース コードを取得し、preg_match_all() 関数と適切な正規表現を使用して、マッチング、そして最後にループ マッチング結果にアクセスするだけです。
以上がPHP 正規表現: HTML 内のすべてのリンクを照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。