PHP正则获取页面所有图片地址

PHPz
发布: 2016-05-27 10:34:33
转载
2738人浏览过

本篇文章带大家了解一下php正则获取页面所有图片地址的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP正则获取页面所有图片地址

PHP正则获取页面所有图片地址

<?php
//取得页面所有的图片地址
function getimages($str)
{
$match_str = "/((http://)+([^ rn()^$!`"'|[]{}<>]*)((.gif)|(.jpg)|(.bmp)|(.png)|(.GIF)|(.JPG)|(.PNG)|(.BMP)))/";
preg_match_all ($match_str,$str,$out,PREG_PATTERN_ORDER);
return $out;
}
?>
登录后复制

/<img . alt="PHP正则获取页面所有图片地址" >"'s]*)/i</img.>

,我使用kindeditor保存文章,但是需要取出第N个图片的地址作为文章的标志图片,文章代码(内容的html)保存到数据库一个字段,然后图片地址保存到另外一个字段.我就是使用上面的正则解决的.

立即学习PHP免费学习笔记(深入)”;

我说明下,上面的地址是直接获取img标签内src属性的值.在使用该正则的php页面访问该路径如果能找到图片的话,可以直接使用,如果不能,你可以使用preg_match_all将所有地址先保存到数组,然后处理路径,比如获取文件名称(不含路径部分),然后重新组成url,再删除图片.

我的例子:

preg_match_all("/<img .*srcs*=s*["|']?s*([^ alt="PHP正则获取页面所有图片地址" >"'s]*)/i",str_ireplace("\","",$content),$arr);
登录后复制

呵呵 我的内容部分被php给加上转义了,所以我需要先把去除,str_ireplace("\","",$content),然后将匹配的内容保存到$arr数组(二维的).

$arr[1]就是存储该路径的数组.

实例

<?php
$ext = 'gif|jpg|jpeg|bmp|png';//罗列图片后缀从而实现多扩展名匹配
$str = '<p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="data/soft_img/2010091101619.jpg" /></p><p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="data/soft_img/2010091029938.jpg" /></p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/992">
                            <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680267675436.jpg" alt="阿里妈妈·创意中心">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/992">阿里妈妈·创意中心</a>
                            <p>阿里妈妈营销创意中心</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="阿里妈妈·创意中心">
                                <span>45</span>
                            </div>
                        </div>
                        <a href="/ai/992" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="阿里妈妈·创意中心">
                        </a>
                    </div>
                <p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="data/soft_img/2010092839019.jpg" /></p>';
preg_match_all("/(href|src)=(["|']?)([^ "'>]+.($ext))\2/i", $str, $matches);
var_dump($matches);
?>
登录后复制

结果

array(5) {
[0]=>
array(3) {
[0]=>
string(57) "src="data/soft_img/2010091101619.jpg""
[1]=>
string(57) "src="sonyericsson/w715/ 2010091029938.jpg""
[2]=>
string(57) "src="data/soft_img/2010092839019.jpg""
}
[1]=>
array(3) {
[0]=>
string(3) "src"
[1]=>
string(3) "src"
[2]=>
string(3) "src"
}
[2]=>
array(3) {
[0]=>
string(1) """
[1]=>
string(1) """
[2]=>
string(1) """
}
[3]=>
array(3) {
[0]=>
string(51) "data/soft_img/2010091101619.jpg"
[1]=>
string(51) "data/soft_img/2010091029938.jpg"
[2]=>
string(51) "data/soft_img/2010092839019.jpg"
}
[4]=>
array(3) {
[0]=>
string(3) "jpg"
[1]=>
string(3) "jpg"
[2]=>
string(3) "jpg"
}
}
登录后复制

PHP正则匹配图片并给图片加链接详解

$newstext=preg_replace(preg_replace('/(<img [^ alt="PHP正则获取页面所有图片地址" >]+srcs*=s*”?([^>"s]+)”?[^>]*>)/im', ‘<a href=”$2″>$1</a>', $newstext);
登录后复制

1.preg_replace和str_replace的区别:

str_replace只是纯字符替换,而preg_replace才是正则替换

2.$0,$1,$2等的说明:

$0指的是被整个模式所匹配的文本;

$1指的是首个 ( ) 引用的串;

$2指的是第二个()引用的串; 以此类推

推荐学习:《PHP视频教程

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:脚本之家网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号