PHP 正規表現: HTML 内のすべての画像リンクを照合する方法

PHPz
リリース: 2023-06-23 13:38:01
オリジナル
2242 人が閲覧しました

HTML ページでは、他の機会に使用するために画像リンクを抽出したり、画像のダウンロードやバッチ処理などを行う必要があることがよくあります。現時点では、PHP 正規表現は、すべての画像リンクを迅速かつ正確に照合するのに役立ちます。

1. HTML 内の画像リンクの分析

HTML では、画像リンクは通常 タグの形式で表示され、その形式は次のとおりです:

<img src="image.jpg" alt="图片">
ログイン後にコピー

このうち、src属性は画像のリンクアドレスを指定します。一般に、画像リンクの形式は次のとおりです。

  1. 相対リンク: /images/picture.jpg
  2. 絶対リンク: https://www.example.com/images/ picture.jpg
  3. パラメータ付きリンク: https://www.example.com/images/picture.jpg?size=large
  4. 相対パス リンク: ../images/picture .jpg

これら 4 つのリンク形式に一致する正規表現を作成する必要があります。

2. PHP 正規表現マッチング画像リンク

PHP にはさまざまな種類の正規表現関数がありますが、その中で最も一般的に使用されるのが preg_match() で、テキストからのマッチングに使用できます。指定された文字列。以下は、上記の 4 つの画像リンク形式に一致する正規表現です:

$pattern = '/<img.+?src=['"](.+?)['"].*?>/';
ログイン後にコピー

この正規表現は複数の部分で構成されています。以下で 1 つずつ説明します。 img. ?src= は タグに一致し、src 属性の前に配置されます。このうち . ? は、src が見つかるまでの任意の文字の非貪欲一致を意味します。

    ['"] は引用符を意味し、二重引用符または一重引用符と一致します。
  1. (. ?) は、次の引用符が出現するまで任意の文字と一致することを意味します。キャプチャ グループここでは、後続のコードで $matches 配列呼び出しを使用できます。
  2. .*? は、> 記号までの任意の文字の非貪欲一致を意味します。 preg_match() 関数を使用して、HTML 内のすべての画像リンクを抽出します:
  3. $html = file_get_contents('example.html'); // 读取 HTML 文件
    preg_match_all($pattern, $html, $matches); // 匹配链接
    $imgUrls = $matches[1]; // 获取匹配到的链接地址
    
    ログイン後にコピー
  4. このようにして、すべての画像リンクを含む配列 $imgUrls を取得できます。特定の形式の画像リンクのみを一致させたい場合は、 、正規表現で行うことができます。絶対リンクのみを照合するなどのいくつかの変更:
  5. $pattern = '/<img.+?src=['"](https?://.+?)['"].*?>/';
    
    ログイン後にコピー
    この正規表現は、http または https プロトコル ヘッダーの制限を強化し、これら 2 つのプロトコルで始まる絶対リンクのみを照合します。

    概要

    PHP 正規表現を使用して HTML 内の画像リンクを照合することは複雑なことではありません。リンク形式に従って対応する正規表現を記述し、preg_match() を使用するだけです。すべてのリンクを迅速かつ正確に抽出する関数。HTML から他のコンテンツを頻繁に抽出する必要がある場合は、同様の方法で実現することもできます。

    以上がPHP 正規表現: HTML 内のすべての画像リンクを照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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