zoukankan      html  css  js  c++  java
  • php把采集内容中图片地址下载并替换成本地地址

    把字符串中地址全部获取到一个数组我们利用preg_match_all函数

    代码如下 复制代码
    <?php
    $str='<p><img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/></p>';
    $pattern="/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/";
    preg_match_all($pattern,$str,$match);print_r($match);
    ?>

    结果

    Array
    (
    [0] => Array
    (
    [0] => <img border="0" src="upfiles/2009/07/1246430143_1.jpg" alt=""/>
    )
    [1] => Array
    (
    [0] => upfiles/2009/07/1246430143_1.jpg
    )
    )

    有了上面核心函数下面就好做了

    代码如下 复制代码
    /**
    * 获取替换文章中的图片路径
    * @param string $xstr 内容
    * @param string $keyword 创建照片的文件名
    * @param string $oriweb 网址
    * @return string
    *
    */
    function replaceimg($xstr,$keyword, $oriweb){

    //保存路径
    $d = date('Ymd', time());
    $dirslsitss = '/var/www/weblist/uploads/'.$keyword.'/'.$d;//分类是否存在
    if(www.111cn.net)(!is_dir($dirslsitss)) {
    @mkdir($dirslsitss, 0777);
    }

    //匹配图片的src
    preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $xstr, $match);

    foreach($match[1] as $imgurl){

    $imgurl = $imgurl;

    if(is_int(strpos($imgurl, 'http'))){
    $arcurl = $imgurl;
    } else {
    $arcurl = $oriweb.$imgurl;
    }
    $img=file_get_contents($arcurl);


    if(!empty($img)) {

    //保存图片到服务器
    $fileimgname = time()."-".rand(1000,9999).".jpg";
    $filecachs=$dirslsitss."/".$fileimgname;
    $fanhuistr = file_put_contents( $filecachs, $img );
    $saveimgfile = "/uploads/$keyword"."/".$d."/".$fileimgname;


    $xstr=str_replace($imgurl,$saveimgfile,$xstr);
    }
    }
    return $xstr;
    }

    from:http://www.111cn.net/phper/php-cy/48607.htm

  • 相关阅读:
    bzoj3339 rmq problem (range mex query)
    sg函数与博弈论
    JSOI Round 2题解
    bzoj2286 消耗战
    输入输出优化(黑科技)
    虚树
    迷之数学题*2
    k-d tree 学习笔记
    一类有依赖的树形背包dp方法
    BZOJ4283: 魔法少女伊莉雅(最短路径图+最短路径树)
  • 原文地址:https://www.cnblogs.com/alibai/p/4046979.html
Copyright © 2011-2022 走看看