美文网首页
简书转hexo之图片迁移笔记!

简书转hexo之图片迁移笔记!

作者: DragonersLi | 来源:发表于2021-04-11 02:42 被阅读0次

    简书打包下载解压目录如下:/hexo/category(分类)/article(文章), 其中hexo目录和以下php代码所在目录同级!

    1.递归遍历hexo目录下文件,头部追加hexo配置。
    2.新建目录assets/imgs,递归遍历hexo目录下文件,找出简书的图片地址并下载。成功后把文章的图片地址改成本地路径。

    set_time_limit(0);
    
    /**
     * 递归获取目录下所有文件
     * @param $path
     * @param $files
     */
    function searchDir($path,&$files){
        if(is_dir($path)){
            $opendir = opendir($path);
            while ($file = readdir($opendir)){
                if($file != '.' && $file != '..'){
                    searchDir($path.'/'.$file, $files);
                }
            }
            closedir($opendir);
        }
        if(!is_dir($path)){
            $files[] = $path;
        }
    }
    
    /**
     * 获取目录下所有文件
     * @param $dir
     * @return array
     */
    function getDir($dir){
        $files = [];
        searchDir($dir, $files);
        return $files;
    }
    
    
    /**
     * 写入
     * @param $fileName
     */
    function write($fileName){
        $file = fopen($fileName, 'r');
        $arr = explode('/',$fileName);
        $arr[2] = str_replace('.md','',$arr[2]);
        $content = fread($file, filesize($fileName));
        $final_content = "---
    layout: post
    title: {$arr[2]}
    description: {$arr[2]}
    date: 2016-06-12 03:30:16 
    categories: {$arr[1]}
    tags: [PHP,{$arr[1]}] 
    comments: true 
    ---" . PHP_EOL . $content;
        fclose($file);
        $file = fopen($fileName, 'w');
        fwrite($file, $final_content);
        fclose($file);
    }
    
    
    $files = getDir('hexo');
    
    
    
    /**
     * 遍历所有文件
     */
    foreach ($files as $value){
    
        //$res = write($value); echo $value."<br>";//遍历简书文章头部追加
    
        //下载简书图片,并替换文章图片地址
        $content = fread(fopen($value, 'r'), filesize($value));
        #$content ='test![简书转hexo之图片迁移笔记!](https://img.haomeiwen.com/i2255249/b5aea355c08feaf1.jpg)test';
        preg_match_all("/\!\[(.*?)\]\(http(s)?:\/\/upload-images.jianshu.io\/upload_images\/(.*?)\)/i",$content,$result);//正则匹配简书markdown格式文件
    
    
        if(!empty($result[0])){//该文章匹配到结果
    
    
            $s = strstr($result[0][0],'https://') ? 's':'';
            $jianshu =  "http{$s}://upload-images.jianshu.io/upload_images/";
            foreach($result[3] as $k=>$v){
              $arr = explode('?',$v);//去除参数
              $array = pathinfo($arr[0]);//获取图片名
    
              $file_contents = @file_get_contents($jianshu.$v);
              $file_write = file_put_contents('./assets/imgs/'.$array['basename'],$file_contents);
              $msg = "{$value}-----{$array['basename']}";
              if($file_write){//写入图片成功,替换原文图片地址
                  $content = str_replace($jianshu.$v,'/assets/imgs/'.$array['basename'],$content);
                  $file = fopen($value, 'w');
                  fwrite($file, $content);
                  fclose($file);
                    $msg."--succes<br>";
              }else{
                    $msg."--error<br>";
              }
              echo $msg;
          }
        }
    }
    

    替换成功后,把hexo/category/articlesassets/imgs复制到hexo项目中,
    路径分别为:source/_post/category/articlessource/assets/imgs

    hexo/linux/阿里云域名转入及DNS修改笔记!.md-----2255249-a73c90980f9c789f.png--succes
    hexo/linux/阿里云域名转入及DNS修改笔记!.md-----2255249-740e26da4e40845c.png--succes
    hexo/linux/阿里云域名转入及DNS修改笔记!.md-----2255249-4c46b9e393308f4e.png--succes
    hexo/linux/阿里云服务器ECS重置密码!.md-----2255249-b41500863d04cbfa.png--succes
    hexo/linux/阿里云服务器ECS重置密码!.md-----2255249-ea65f1b12d5a1cea.png--succes
    ...
    

    相关文章

      网友评论

          本文标题:简书转hexo之图片迁移笔记!

          本文链接:https://www.haomeiwen.com/subject/mtdnkltx.html