• 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

  • 相关阅读:
    认识一下JavaScript
    JAVA并发容器之CopyOnWrite容器
    JAVA并发容器之ConcurrentHashMap
    由浅入深理解java集合(一)——集合框架 Collection、Map
    强引用、软引用、弱引用、虚引用
    Lock和synchronized的选择
    Java并发编程:volatile关键字解析
    java线程并发-Thread类的使用
    SQL语句中:UNION与UNION ALL的区别
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/alibai/p/4046979.html
Copyright © 2020-2023  润新知