首頁  >  文章  >  後端開發  >  PHP 正規表示式:如何匹配 HTML 中的所有圖片鏈接

PHP 正規表示式:如何匹配 HTML 中的所有圖片鏈接

PHPz
PHPz原創
2023-06-23 11:17:332191瀏覽

在 HTML 頁面中,我們經常需要提取其中的圖片鏈接,以便在其他場合使用,或者做一些圖片下載、批次等操作。此時,PHP 正規表示式可以幫助我們快速且準確地匹配出所有的圖片連結。

一、分析HTML 中的圖片連結

在HTML 中,圖片連結通常以a1f02c36ba31691bcfe87b2722de723b 標籤的形式出現,其格式如下:

<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

我們需要寫一個正規表示式來符合這四種連結格式。

二、PHP 正規表示式匹配圖片連結

PHP 中的正規表示式函數有很多種,其中preg_match() 是最常用的一種,可以用於從文字中匹配指定的字串。以下是一個可以符合上述四種圖片連結格式的正規表示式:

$pattern = '/<img.+?src=['"](.+?)['"].*?>/';

這個正規表示式由多個部分組成,下面我們來一一解釋:

  1. < ;img. ?src= 符合a1f02c36ba31691bcfe87b2722de723b 標籤,並定位到src 屬性之前。其中,. ? 表示非貪婪匹配任意字符,直到遇到 src。
  2. ['"] 表示引號,可以匹配雙引號或單引號。
  3. (. ?) 表示匹配任意字符,直到遇到下一個引號。這裡使用了捕獲組,可以在後續程式碼中使用$matches 數組呼叫。
  4. .*? 表示非貪婪匹配任意字符,直到> 符號。

接下來,我們使用preg_match() 函數來提取HTML 中所有的圖片鏈接:

$html = file_get_contents('example.html'); // 读取 HTML 文件
preg_match_all($pattern, $html, $matches); // 匹配链接
$imgUrls = $matches[1]; // 获取匹配到的链接地址

這樣,我們就可以得到一個包含所有圖片鏈接的數組$imgUrls。如果你希望只匹配某種格式的圖片鏈接,可以在正則表達式中做一些修改,例如只匹配絕對連結:

$pattern = '/<img.+?src=['"](https?://.+?)['"].*?>/';

這個正規表示式增加了http 或https 協議頭的限制,只匹配以這兩種協議開頭的絕對連結。

總結

使用PHP 正規表示式來匹配HTML 中的圖片連結並不是一件複雜的事情,只需要根據連結格式編寫對應的正規表示式,然後使用preg_match() 函數即可快速準確地提取出所有的連結。如果你經常需要從HTML 中提取其他內容,也可以透過類似的方法來實現。

以上是PHP 正規表示式:如何匹配 HTML 中的所有圖片鏈接的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn