• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php正则提取img标签各属性值

php 搞代码 4年前 (2022-01-23) 19次浏览 已收录 0个评论
<?php/*create by [email protected] for http://www.xiaojudeng.com*/$ext = 'gif|jpg|jpeg|bmp|png';//罗列图片后缀从而实现多扩展名匹配 by http://www.k686.com 绿色软件$str = '<p><img title="小桔灯分类信息网" alt="小桔灯分类信息网" onl oad="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102454887.jpg" /></p><p><img title=&quo<em style="color:transparent">本文来源gao.dai.ma.com搞@代*码#网</em><a>搞代gaodaima码</a>t;小桔灯分类信息网" alt="小桔灯分类信息网" onl oad="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102455105.jpg" /></p><p><img title="小桔灯分类信息网" alt="小桔灯分类信息网" onl oad="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102459367.jpg" /></p>';$list = array();//这里存放结果map$c1 = preg_match_all('/<img\s.*?>/', $str, $m1);//先取出所有img标签文本for($i=0; $i<$c1; $i++) {//对所有的img标签进行取属性$c2 = preg_match_all('/(\w+)\s*=\s*(?:(?:(["\'])(.*?)(?=\2))|([^\/\s]*))/', $m1[0][$i], $m2);//匹配出所有的属性for($j=0; $j<$c2; $j++) {//将匹配完的结果进行结构重组$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j] : $m2[3][$j];}}print_r($list);//查看结果变量?>

输出结果如下:

---------- php ----------Array(    [0] => Array        (            [title] => 小桔灯分类信息网            [alt] => 小桔灯分类信息网            [onload] => ResizeImage(this,860)            [src] => http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102454887.jpg        )    [1] => Array        (            [title] => 小桔灯分类信息网            [alt] => 小桔灯分类信息网            [onload] => ResizeImage(this,860)            [src] => http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102455105.jpg        )    [2] => Array        (            [title] => 小桔灯分类信息网            [alt] => 小桔灯分类信息网            [onload] => ResizeImage(this,860)            [src] => http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102459367.jpg        ))输出完毕 (耗时 0 秒) - 正常终止

下面是另外一个写法的,充分证明此正则方法可以完美匹配img标签的各属性:

<?php/*create by [email protected] for http://www.xiaojudeng.com*/$str = <<<EOT<img src = "http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916470.jpg" class ='image x1' alt="小桔灯分类信息网" shuxing =shux /><img src = "http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916803.jpg" class ='image x2' alt='小桔灯分类信息网' title=abc shuxing =shux />这里是小桔灯分类信息网 http://www.xiaojudeng.com<a href="http://www.xiaojudeng.com/" class="a" alt=abc shuxing="shux" />只取得img标签EOT;$list = array();//这里存放结果map$c1 = preg_match_all('/<img\s.*?>/', $str, $m1);//先取出所有img标签文本for($i=0; $i<$c1; $i++) {//对所有的img标签进行取属性$c2 = preg_match_all('/(\w+)\s*=\s*(?:(?:(["\'])(.*?)(?=\2))|([^\/\s]*))/', $m1[0][$i], $m2);//匹配出所有的属性for($j=0; $j<$c2; $j++) {//将匹配完的结果进行结构重组$list[$i][$m2[1][$j]] = !empty($m2[4][$j]) ? $m2[4][$j] : $m2[3][$j];}}print_r($list);//查看结果变量?>

输出结果如下:

---------- php ----------Array(    [0] => Array        (            [src] => http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916470.jpg            [class] => image x1            [alt] => 小桔灯分类信息网            [shuxing] => shux        )    [1] => Array        (            [src] => http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916803.jpg            [class] => image x2            [alt] => 小桔灯分类信息网            [title] => abc            [shuxing] => shux        ))输出完毕 (耗时 0 秒) - 正常终止

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php正则提取img标签各属性值
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址