写一个函数,获取一篇文章内容中的全部图片,并下载

写一个函数,获取一篇文章内容中的全部图片,并下载

function download_images($article_url = '', $image_path = 'tmp'){

    // 获取文章类容
    $content = file_get_contents($article_url);

    // 利用正则表达式得到图片链接
    $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif|png)).*?>/';
    $ret = preg_match_all($reg_tag, $content, $match_result); 
    $pic_url_array = array_unique($match_result1[1]);

    // 创建路径
    $dir = getcwd() . DIRECTORY_SEPARATOR .$image_path;
    mkdir(iconv("UTF-8", "GBK", $dir), 0777, true);

    foreach($pic_url_array as $pic_url){
        // 获取文件信息
        $ch = curl_init($pic_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $fileInfo = curl_exec($ch);
        $httpinfo = curl_getinfo($ch);
        curl_close($ch);

        // 获取图片文件后缀
        $ext = strrchr($pic_url, '.');
        $filename = $dir . '/' . uniqid() . $ext; 

        // 保存图片信息到文件
        $local_file = fopen($filename, 'w');
        if(false !== $local_file){
            if( false !== fwrite($local_file, $filecontent) ){
            fclose($local_file);
            }
        }
    }

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112590.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js解析PSD文件,Java处理psd文件智能图层

    js解析PSD文件,Java处理psd文件智能图层现在市面上很多的webapp都提供模板功能,所谓模板就是一系列元素的集合,模板的制作一般都需要设计师先在Photoshop等软件中制作好设计好,然后再一定的方式来还原设计稿,要么需要编码要么需要在某些应用中按照设计稿重画设计生成模板数据,都还是比较麻烦的,我们能不能通过psd文件直接生成模板呢?要做到这点我们就需要解析psd文件,而psd文件是Photoshop软件的涉及保存文件,浏览器并不能直接识别,所幸的是psd.js赋予了我们这样的能力。foxpsd是一个用来解析PhotoShop的PSD文件的

    2022年6月7日
    191
  • 【AssemblyInfo.cs】为程序设置版本和帮助信息

    【AssemblyInfo.cs】为程序设置版本和帮助信息软件编写完成之后,都会在软件中添加一些版权信息,怎样设置这些版权信息呐?C#工程中的AssemblyInfo.cs文件又有什么作用?

    2022年7月13日
    27
  • stream和streaming_parallelStream

    stream和streaming_parallelStreamStream和parallelStream一.什么是Stream?Stream是在Java8新增的特性,普遍称其为流;它不是数据结构也不存放任何数据,其主要用于集合的逻辑处理。二.和Iterator的区别Iterator做为迭代器,其按照一定的顺序迭代遍历集合中的每一个元素,并且对每个元素进行指定的操作。而Stream在此基础上还可以将这种操作并行化,利用多核处理器的优势快…

    2022年4月19日
    115
  • java 音频转为wav格式标准音频 | Java工具类

    java 音频转为wav格式标准音频 | Java工具类目录简述环境依赖maven依赖ffmpeg依赖工具类代码总结简述该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率、声道数等指标。主要是使用ffmpeg命令进行转换。环境依赖maven依赖<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platfor

    2022年6月20日
    25
  • 深入理解Java虚拟机05–虚拟机类加载机制「建议收藏」

    深入理解Java虚拟机05–虚拟机类加载机制「建议收藏」深入理解Java虚拟机05–虚拟机类加载机制

    2022年4月20日
    71
  • dmesg 命令

    dmesg 命令dmesg 这个命令 Linux 下用的还是比较多的 现在来详细看一下 Linuxdmesg 命令用于显示开机信息 kernel 会将开机信息存储在 ringbuffer 中 您若是开机时来不及查看信息 可利用 dmesg 来查看 开机信息亦保存在 var log 目录中 名称为 dmesg 的文件里 一 语法 dmesg cn s lt 缓冲区大小 gt 二 选项 c 显示信息后

    2025年7月28日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号