php正则匹配图片路径的方法参考

发布时间:2020-02-24编辑:脚本学堂
本文详细了php中用正则表达式匹配图片路径的方法,有需要的朋友可以参考学习下。

php正则匹配图片路径:
 

复制代码 代码示例:
/<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正则提取图片地址

参考之前的文章,小议php正则提取图片地址的方法,提取src=里面的图片地址还不足够,因为不能保证那个地址一定是绝对地址,完全的地址,如果那是相对的呢?如果地址诸如:
albums/Candids/thumb_P1050338.jpg
/content/media/touts/5271608/5271654/15320982
应该如何操作呢?

有时在这些地址前面需要加http://example1.com/ ,有些甚至要加http://example1.com/example2/.../,这太不现实了。

经过思索,原来:http://example.com/ 和http://example.com////// 是一样的!
http://img3.jb200.com/pics/nav/lg_main_a6.png

http://img3.jb200.com////pics////nav///lg_main_a6.png
 
于是,对于一开始提到的两个相对地址如果要强行加入某前缀恢复成绝对地址的话,也不管前面有没有“/”,只管加一个“/”就好,“有杀错,没放过” 嘛,多一个显示仍会正常,但少一个“/”。