PHP正则提取或替换img标记属性

<?php



/*PHP正则提取图片img标记中的任意属性*/

$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];



//2、取width

preg_match('/<img.+(width=\"?\d*\"?).+>/i',$str,$match);

echo $match[1];



//3、取height

preg_match('/<img.+(height=\"?\d*\"?).+>/i',$str,$match);

echo $match[1];



//4、取src

preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$str,$match);

echo $match[1];



/*PHP正则替换图片img标记中的任意属性*/

//1、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg")

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

echo "<hr/>";



//2、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg",并省去宽和高

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







?>

 

/*
*获取html指定标签的相关属性
*@param string $content 要解析HTML内容
*@param string $attr 指定要获取的标签属性
*@param string $tag  指定解析标签
*@return  array 
*/

function get_html_attr_by_tag($content="",$attr="src",$tag="img"){
    
    $arr=array();
    
    $cache_arr=array();
    
    $attr=explode(',',$attr);
    
    $tag=explode(',',$tag);
    
    foreach($tag as $i=>$t){
        
        foreach($attr as $a){
            
            preg_match_all("/<\s*".$t."\s+[^>]*?".$a."\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i",$content,$match);
            
            foreach($match[2] as $n=>$m){
                
                $arr[$t][$n][$a]=$m;
            
            }
            
        }
        
    }
    
    return $arr;//array
    
}
/**获取html指定标签的相关属性*@param string $content 要解析HTML内容*@param string $attr 指定要获取的标签属性*@param string $tag  指定解析标签*@return  array */
function get_html_attr_by_tag($content="",$attr="src",$tag="img"){$arr=array();$cache_arr=array();$attr=explode(',',$attr);$tag=explode(',',$tag);foreach($tag as $i=>$t){foreach($attr as $a){    preg_match_all("/<\s*".$t."\s+[^>]*?".$a."\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i",$content,$match);foreach($match[2] as $n=>$m){$arr[$t][$n][$a]=$m;    }}}return $arr;//array}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值