zoukankan      html  css  js  c++  java
  • php正则匹配文章中的远程图片地址并下载图片到本地

    上面就将远程图片给匹配出来了,我们需要将其保持到本地。这里需要注意两点:

    1.图片保存路径(图片存储目录)

    2.实际访问图片地址

    下面是完整实例:(你可以保存到本地服务器修改相应地方进行测试)

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
    <meta charset="UTF-8">
    <title>php保存远程图片到本地,php正则匹配文章中的图片地址</title>
    </head>
    <body>
    <?php
    //保存文章中远程图片到本地
    //作者:yanue;
    // 文件保存目录路径(请更换为你自己的路径, 你可以echo一下)
    $save_path = $_SERVER ['DOCUMENT_ROOT'] . 'swfupload/attached/';
    // 文件保存目录URL
    $save_url = '/swfupload/attached/';
    $save_path = realpath ( $save_path ) . '/';
    // 图片存储目录
    $imgPath = $save_path . date ( "Ymd" );
    $imgUrl = $save_url . date ( "Ymd" );
    // 创建文件夹
    if (! is_dir ( $imgPath )) {
     @mkdir ( $imgPath, 0777 );
    }
    $content = '这里是文章内容,这里插入一张图片测试 <img src="http://www.php1.cn/imgupload/201509/0904011721db04fb16_75_0.jpg">';
    $content = stripslashes ( $content );
    $img_array = array ();
    // 匹配所有远程图片
    preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png))/isU", $content, $img_array );
    // 匹配出来的不重复图片
    $img_array = array_unique ( $img_array [2] );
    print_r($img_array);
    // 时间无限制
    set_time_limit ( 0 );
    foreach ( $img_array as $key => $value ) {
     $value = trim ( $value );
     // 读取远程图片
     $get_file = @file_get_contents ( $value );
     // 保存到本地图片名称
     $imgname = date ( "YmdHis" ) . '_' . rand ( 10000, 99999 ) . "." . substr ( $value, - 3, 3 );
     // 保存到本地的实际文件地址(包含路径和名称)
     $fileName = $imgPath . '/' . $imgname;
     // 实际访问的地址
     $fileurl = $imgUrl . "/" . $imgname;
     // 文件写入
     if ($get_file) {
      $fp = @fopen ( $fileName, "w" );
      @fwrite ( $fp, $get_file );
      @fclose ( $fp );
     }
     // 替换原来的图片地址
     $content = ereg_replace ( $value, $fileurl, $content );
    }
    echo $content;
    ?>
    </body>
    </html>
  • 相关阅读:
    Cannot find the class file for java.lang.Object错误
    JAVA 基础 八种数据类型
    获取转发前的uri与jsp:include的uri
    web 应用获取mybatis sqlSessionFactory 扫描保存的的sqlMapper
    Spring MVC 3 试用笔记——helloworld
    Struts2 Plugin 试用笔记
    JavaScript面试题(评解为原创)
    DataSet的Table筛选多条件情况用法
    每日一帖,记录技术点滴
    行内元素和块级元素的区别
  • 原文地址:https://www.cnblogs.com/shanyansheng/p/5172015.html
Copyright © 2011-2022 走看看