首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 使用正則表達式提取圖片標籤屬性完整指南

     編輯:PHP 相關知識

前言

在 PHP 開發中,經常需要從 HTML 字串中解析 <img> 標籤的屬性,例如 src、width、height 等。雖然現代專案建議使用 DOMDocument 解析 HTML,但正則表達式在簡單場景下依然快速有效。本文將示範如何用 preg_match 提取任意屬性,並演示如何替換圖片路徑。

範例字串

$str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正則提取或更改圖片img標記中的任意屬性</center>';

1. 提取完整圖片標籤

preg_match('/<\s*img\s+[^>]*?src\s*=\s*([\'\"])(.*?)\\1[^>]*?\/?\s*>/i', $str, $match);
echo $match[0]; // 輸出完整的 <img ...> 標籤

2. 提取 width 屬性

preg_match('/<img.+(width="?\d*"?).+>/i', $str, $match);
echo $match[1]; // 輸出 width="120"

3. 提取 height 屬性

preg_match('/<img.+(height="?\d*"?).+>/i', $str, $match);
echo $match[1]; // 輸出 height="120"

4. 提取 src 路徑

preg_match('/<img.+src="?(.+\.(jpg|gif|bmp|bnp|png))"?.+>/i', $str, $match);
echo $match[1]; // 輸出 /uploads/images/20100516000.jpg

5. 替換圖片路徑(保留寬高)

// 將 src="/uploads/images/..." 替換為 src="/uploads/uc/images/..."
echo preg_replace(
    '/(<img.+src="?.+)(images\/)(.+\.(jpg|gif|bmp|bnp|png)"?.+>)/i',
    '${1}uc/images/${3}',
    $str
);

6. 替換圖片路徑並移除寬高屬性

echo preg_replace(
    '/(<img).+(src="?.+)images\/(.+\.(jpg|gif|bmp|bnp|png)"?).+>/i',
    '${1} ${2}uc/images/${3}>',
    $str
);

注意事項

  • 正則表達式對屬性順序、引號風格敏感,實際專案建議改用 DOMDocument + DOMXPath 更穩健。
  • 上述範例僅供學習參考,生產環境請加強錯誤處理與邊界測試。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved