简书打包下载解压目录如下:
/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/articles
、assets/imgs
复制到hexo
项目中,
路径分别为:source/_post/category/articles
、source/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
...
网友评论