+ -
当前位置:首页 → 问答吧 → 利用正则提取Html字符串中img的相关属性

利用正则提取Html字符串中img的相关属性

时间:2011-12-17

来源:互联网

PHP code
$str = '<p>234324234</p><img title=\"测试\" alt=\"测试\" align=\"left\" src=\"/jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg\" width=\"200\" height=\"100\" /> <p>&nbsp;</p>';


如上所示的一个Html字符串,我需要写正则表达式来提取图片的相关属性,包括图片的width,height,src,title,alt,align等属性,我自己在网上找了些资料,也尝试着提取,但结果有些不对,对正则的语法不太熟。

PHP code
/*PHP正则提取图片img标记中的任意属性*/
$str = '<p>234324234</p><img title=\"测试\" alt=\"测试\" align=\"left\" src=\"/jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg\" width=\"200\" height=\"100\" /> <p>&nbsp;</p>';
 
//1、取整个图片代码
preg_match('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*\/>/i',$str,$match); 
echo "取整个图片代码:" . $match[0] . "<br/>";
 
//2、取width
preg_match('/<img.+(width=\\\"?\d*\\\"?).+>/i',$str,$match);
echo "取width:" . $match[1] . "<br/>";
 
//3、取height
preg_match('/<img.+(height=\\\"?\d*\\\"?).+>/i',$str,$match);
echo "取height:" . $match[1] . "<br/>";
 
//4、取src
preg_match('/<img.+src=\\\"?(.+\.(jpg|gif|bmp|bnp|png))\\\"?.+>/i',$str,$match);
echo "取src:" . $match[1] . "<br/>";


//4、取title
preg_match('/<img.+(title=\\\"?\d*\\\"?).+>/i',$str,$match);
echo "取title:" . $match[1] . "<br/>";


我想要在最终结果是:

取整个图片代码:<img title=\"测试\" alt=\"测试\" align=\"left\" src=\"/jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg\" width=\"200\" height=\"100\" />
取width:200
取height:100
取src:/jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg
取title:测试

作者: yanggang82   发布时间: 2011-12-17

PHP code

preg_match('/<img\s*title=(\\\")([^"]*)\\1[^src]*src=\\1([^"]*)\\1\s*width=\\1([^"]*)\\1\s*height=\\1([^"]*)\\1[^>]*>/i',$str,$match); 
print_r($match);


Array
(
  [0] => <img title=\"测试\" alt=\"测试\" align=\"left\" src=\"/jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg\" width=\"200\" height=\"100\" />
  [1] => \"
  [2] => 测试
  [3] => /jmlt/kindeditor/attached/image/20111217/20111217065616_27638.jpg
  [4] => 200
  [5] => 100
)

作者: jordan102   发布时间: 2011-12-17

热门下载

更多