介绍
本篇内容介绍了“php怎么用正则匹配文章中的远程图片地址并下载图片至本地”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
使用php的正则表达式来实现:
content 美元;=,& # 39;这里是文章内容,这里插入一张图片测试,& lt; https://www.yisu.com/zixun/img src=" XXXXXXXXXXXXXXXXXXXX "> '; (内容=stripslashes美元内容); 数组$ img_array=();//匹配所有远程图片 preg_match_all ("/src | src)=(“| |) {0} (http://(. *)。(gif | jpg | jpeg | bmp | png))/isU”,内容美元,美元img_array);//匹配出来的不重复图片 (img_array=array_unique美元img_array [2]); print_r ($ img_array);
上面就将远程图片给匹配出来了,我们需要将其保持到本地。这里需要注意两点:
1。图片保存路径(图片存储目录)
2。实际访问图片地址
下面是完整实例:(你可以保存到本地服务器修改相应地方进行测试)
& lt; ! DOCTYPE HTML> & lt; html  lang=癳n-US"祝辞 & lt; head> & lt; meta charset=癠TF-8"祝辞 & lt; title> php保存远程图片到本地,php正则匹配文章中的图片地址& lt;/title> & lt;/head> & lt; body> php & lt; ?//保存文章中远程图片到本地//yanue;//,文件保存目录路径(请更换为你自己的路径,,你可以回声一下) $ save_path =, _SERVER 美元;[& # 39;document_root # 39;],只& # 39;swfupload/附加/& # 39;;//,文件保存目录URL=$ save_url & # 39;/swfupload/附件/& # 39;; $ save_path =, realpath (, save_path 美元;),只& # 39;/& # 39;;//,图片存储目录 $ imgPath =, save_path 美元;只date (,“Ymd",); $ imgUrl =, save_url 美元;只date (,“Ymd",);//,创建文件夹 if (!, is_dir (, imgPath 美元;)),{ ,@mkdir (, imgPath美元,0777,); }=$ content & # 39;这里是文章内容,这里插入一张图片测试,& lt; img src=https://www.yisu.com/zixun/癤XXXXXXXXXXXXXXXXXXX”>”; (内容=stripslashes美元内容); 数组$ img_array=();//匹配所有远程图片 preg_match_all ("/src | src)=(“| |) {0} (http://(. *)。(gif | jpg | jpeg | bmp | png))/isU”,内容美元,美元img_array);//匹配出来的不重复图片 (img_array=array_unique美元img_array [2]); print_r ($ img_array);//时间无限制 set_time_limit (0); foreach (img_array关键=>美元美元值){ (value=削减美元值);//读取远程图片 (get_file=@file_get_contents美元值);//保存到本地图片名称 $ imgname=日期(“YmdHis”)。“_”。兰特(10000,99999)。“。”。substr(美元价值,- 3,3);//保存到本地的实际文件地址(包含路径和名称) 文件名=imgPath美元。“/薄mgname美元;//实际访问的地址 fileurl=imgUrl美元。“/薄mgname美元;//文件写入 如果(get_file美元){ (fp=@fopen美元文件名,“w”); @fwrite (fp, get_file美元); @fclose (fp); }//替换原来的图片地址 $内容=ereg_replace(价值,fileurl美元,美元内容); } echo $内容; ?> 身体>