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


Posted in PHP onMarch 23, 2016
<?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.*srcs*=s*["|']?s*([^>"'s]*)/i

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

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

我的例子:

preg_match_all("/<img.*srcs*=s*["|']?s*([^>"'s]*)/i",str_ireplace("\","",$content),$arr);

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

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

实例

<?php
$ext = 'gif|jpg|jpeg|bmp|png';//罗列图片后缀从而实现多扩展名匹配 by https://3water.com 绿色软件
$str = '<p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://3water.com /data/soft_img/2010091101619.jpg" /></p><p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://3water.com /data/soft_img/2010091029938.jpg" /></p><p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://3water.com /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="https://3water.com /data/soft_img/2010091101619.jpg""
[1]=>
string(57) "src="http://www.hzhuti.com/sonyericsson/w715/ 2010091029938.jpg""
[2]=>
string(57) "src="https://3water.com /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) "https://3water.com /data/soft_img/2010091101619.jpg"
[1]=>
string(51) "https://3water.com /data/soft_img/2010091029938.jpg"
[2]=>
string(51) "https://3water.com /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[^>]+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 数组教程 定义数组
Oct 23 PHP
php Static关键字实用方法
Jun 04 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
解析php取整的几种方式
Jun 25 PHP
PHP图片裁剪函数(保持图像不变形)
May 04 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 #PHP
php获取文件后缀的9种方法
Mar 22 #PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 #PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 #PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 #PHP
Zend Framework框架路由机制代码分析
Mar 22 #PHP
PHP实现补齐关闭的HTML标签
Mar 22 #PHP
You might like
PHP发送AT指令实例代码
2016/05/26 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python验证企业工商注册码
2015/10/25 Python
python定位xpath 节点位置的方法
2019/08/27 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
如何通过python实现全排列
2020/02/11 Python
django rest framework 自定义返回方式
2020/07/12 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
python字典按照value排序方法
2020/12/28 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
小学生家长评语集锦
2014/01/30 职场文书
我的求职择业计划书
2014/04/04 职场文书
西双版纳导游词
2015/02/03 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
部分武汉产收音机展览
2022/04/07 无线电
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS