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

 更新时间:2016年03月23日 09:12:23   作者:jerrylsxu  
这篇文章主要介绍了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.*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://www.jb51.net 绿色软件
$str = '<p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://www.jb51.net /data/soft_img/2010091101619.jpg" /></p><p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://www.jb51.net /data/soft_img/2010091029938.jpg" /></p><p><img title="绿色软件" alt="绿色软件" onload="ResizeImage(this,860)" src="https://www.jb51.net /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://www.jb51.net /data/soft_img/2010091101619.jpg""
[1]=>
string(57) "src="http://www.hzhuti.com/sonyericsson/w715/ 2010091029938.jpg""
[2]=>
string(57) "src="https://www.jb51.net /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://www.jb51.net /data/soft_img/2010091101619.jpg"
[1]=>
string(51) "https://www.jb51.net /data/soft_img/2010091029938.jpg"
[2]=>
string(51) "https://www.jb51.net /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正则获取页面所有图片地址的知识,小编就给大家介绍到这里,希望对大家有所帮助!

相关文章

  • 摘自织梦CMS中的图片处理类

    摘自织梦CMS中的图片处理类

    这篇文章主要介绍了摘自织梦CMS中的图片处理类,通过面向对象的方式较为详细的实现了php针对图片的缩略图生成及水印添加等操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • 实例讲解PHP页面静态化

    实例讲解PHP页面静态化

    本篇文章主要给大家通过实例讲解了PHP页面静态化的原理以及相关方法,对此有需要的朋友参考下吧。
    2018-02-02
  • yii gridview实现时间段筛选功能

    yii gridview实现时间段筛选功能

    这篇文章主要为大家详细介绍了yii gridview实现时间段筛选功能,一个输入框,自动提交功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Joomla调用系统自带编辑器的实现方法

    Joomla调用系统自带编辑器的实现方法

    这篇文章主要介绍了Joomla调用系统自带编辑器的实现方法,实例分析了Joomla调用系统自带编辑器的具体步骤、相关函数与使用技巧,需要的朋友可以参考下
    2016-05-05
  • CakePHP的安装的简单方法

    CakePHP的安装的简单方法

    在本篇文章里小编给大家整理的是一篇关于CakePHP的安装的简单方法,对此有兴趣的朋友们可以参考学习下。
    2021-01-01
  • php中的boolean(布尔)类型详解

    php中的boolean(布尔)类型详解

    本文是对php中的boolean(布尔)类型进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • ThinkPHP之getField详解

    ThinkPHP之getField详解

    这篇文章主要介绍了ThinkPHP的getField方法,需要的朋友可以参考下
    2014-06-06
  • Laravel 之url参数,获取路由参数的例子

    Laravel 之url参数,获取路由参数的例子

    今天小编就为大家分享一篇Laravel 之url参数,获取路由参数的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • laravel-admin自动生成模块,及相关基础配置方法

    laravel-admin自动生成模块,及相关基础配置方法

    今天小编就为大家分享一篇laravel-admin自动生成模块,及相关基础配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php实现根据IP地址获取其所在省市的方法

    php实现根据IP地址获取其所在省市的方法

    今天,就讨论一下在PHP中如何获取用户IP地址、PHP根据IP判断用户所在城市以及PHP根据IP实现城市切换或跳转的问题。
    2015-04-04

最新评论