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

PHP 正则提取与替换 HTML img 标签属性的实用技巧

     編輯:PHP 綜合知識

测试字符串

$str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标签中的任意属性</center>';

常用提取模式

目的正则模式结果示例
整个 img 标签/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i<img src="..." height="120" width="120">
width 属性值/<img.+(width=\"?\d*\"?).+>/iwidth="120"
height 属性值/<img.+(height=\"?\d*\"?).+>/iheight="120"
src 路径/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i/uploads/images/20100516000.jpg

替换示例

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

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

最佳实践建议

  • **优先使用 DOMDocument**:$dom = new DOMDocument(); $dom->loadHTML($str); $imgs = $dom->getElementsByTagName('img'); 遍历获取/设置属性,健壮性远超正则。
  • 正则仅适用于**结构固定、一次性**的简单提取/替换。
  • HTML 可能包含单引号、双引号、无引号、属性顺序变化,正则极难全覆盖。
  • 若必须用正则,添加 s 修饰符匹配换行,并充分测试边界情况。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved