Rumah > pembangunan bahagian belakang > tutorial php > php正则提取img标签各属性值

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

巴扎黑
Lepaskan: 2016-11-24 13:49:54
asal
1648 orang telah melayarinya

<?php
/*
create by tuzwu@qq.com for http://www.xiaojudeng.com
*/
$ext = &#39;gif|jpg|jpeg|bmp|png&#39;;//罗列图片后缀从而实现多扩展名匹配 by http://www.k686.com 绿色软件
$str = &#39;<p><img title="小桔灯分类信息网" alt="小桔灯分类信息网" onload="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102454887.jpg" /></p><p><img title="小桔灯分类信息网" alt="小桔灯分类信息网" onload="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102455105.jpg" /></p><p><img title="小桔灯分类信息网" alt="小桔灯分类信息网" onload="ResizeImage(this,860)" src="http://www.xiaojudeng.com/uploadfile/2011/0910/20110910102459367.jpg" /></p>&#39;;
$list = array();//这里存放结果map
$c1 = preg_match_all(&#39;/<img\s.*?>/&#39;, $str, $m1);//先取出所有img标签文本
for($i=0; $i<$c1; $i++) {//对所有的img标签进行取属性
$c2 = preg_match_all(&#39;/(\w+)\s*=\s*(?:(?:(["\&#39;])(.*?)(?=\2))|([^\/\s]*))/&#39;, $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);//查看结果变量
?>
Salin selepas log masuk

输出结果如下:

---------- 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 秒) - 正常终止
Salin selepas log masuk

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

<?php
/*
create by tuzwu@qq.com for http://www.xiaojudeng.com
*/
$str = <<<EOT
<img src = "http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916470.jpg" class =&#39;image x1&#39; alt="小桔灯分类信息网" shuxing =shux />
<img src = "http://www.xiaojudeng.com/uploadfile/2011/0910/20110910100916803.jpg" class =&#39;image x2&#39; alt=&#39;小桔灯分类信息网&#39; 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(&#39;/<img\s.*?>/&#39;, $str, $m1);//先取出所有img标签文本
for($i=0; $i<$c1; $i++) {//对所有的img标签进行取属性
$c2 = preg_match_all(&#39;/(\w+)\s*=\s*(?:(?:(["\&#39;])(.*?)(?=\2))|([^\/\s]*))/&#39;, $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);//查看结果变量
?>
Salin selepas log masuk

输出结果如下:

---------- 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 秒) - 正常终止
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan