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

2021-04-11  本文已影响0人  DragonersLi

简书打包下载解压目录如下:/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
...
上一篇下一篇

猜你喜欢

热点阅读