$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正则提取图片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:测试

解决方案 »

  1.   


    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
    )
      

  2.   

    楼上的果然是高人,但您现在是在一个正则里取了我所需的值,我这个只是个样例,有可能Html的字符串结构不完全是这样,有可能有其中的某些属性,也可能没有,所以我想将其中的每一个属性单独写一个正则提取,根据您写是正则,我还是不会自己拆分,能麻烦帮我拆分一下么。
      

  3.   


    $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('/<img\s*[^>]*>/i',$str,$match); 
    echo "取整个图片代码:" . $match[0] . "\n";
     
    //2、取width
    preg_match('/<img[^>]*width=(\\\")([^"]*)\\1[^>]*>/i',$str,$match);
    echo "取width:" . $match[2] . "\n";
     
    //3、取height
    preg_match('/<img[^>]*height=(\\\")([^"]*)\\1[^>]*>/i',$str,$match);
    echo "取height:" . $match[2] . "\n";
     
    //4、取src
    preg_match('/<img[^>]*src=(\\\")([^"]*)\\1[^>]*>/i',$str,$match);
    echo "取src:" . $match[2] . "\n";
    //4、取title
    preg_match('/<img[^>]*title=(\\\")([^"]*)\\1[^>]*>/i',$str,$match);
    echo "取title:" . $match[2] . "\n";