PHP实现Markdown文章上传到七牛图床的实例内容


Posted in PHP onFebruary 11, 2020

在使用 Markdown 编写文章之后,经常需要发布到不同的平台,这里会遇到一个问题,文章的图片需要手动的进行上传,管理起来非常不方便,因此,强烈建议将图片统一上传到图床中,这样的话一篇文章就可以轻松的同步到各大平台上面了。下面,用 PHP 来实现该功能,选用 七牛云 作为图床

创建并进入项目

$ mkdir markdown-images-to-qiniu

$ cd markdown-images-to-qiniu

安装七牛官方的扩展

$ composer require qiniu/php-sdk

实现思路很简单

● 读取 makrdown 文件

● 正则匹配出所有的图片

● 依次上传图片

● 将文章图片的地址替换为图床地址

● 保存替换后的文章

以下是具体的实现,首先在项目目录下创建脚本 index.php,

<?php

require 'vendor/autoload.php';

use Qiniu\Auth;

use Qiniu\Storage\UploadManager;

// 1. 读取 `makrdown` 文件

$file = $argv[1];

if(! file_exists($file) ){

  return "找不到文件{$file}";

}

$orginalContent = file_get_contents($file);

// 2. 正则匹配出所有的图片

preg_match_all(

  '/\!\[.*\]\(.+\)/',

  $orginalContent,

  $matches,

  PREG_PATTERN_ORDER

);

$mdImageArr = $matches[0];

if(! count($mdImageArr) ){

  return "无需上传图片";

}

// 3. 依次上传图片

$accessKey = '你的 AccessKey';

$secretKey = '你的 SecretKey';

$bucket = '你的七牛空间名'; // eg. mindgeek

$url = "空间所绑定的域名"; // eg. http://qiniu.site.com

$auth = new Auth($accessKey, $secretKey);

$token = $auth->uploadToken($bucket);

$uploadMgr = new UploadManager();

$content = $orginalContent;

foreach ($mdImageArr as $image) {

  $start = mb_strpos($image, '](') + 2;

  $localPath = mb_substr($image, $start, -1);

  $extension = pathinfo($localPath)['extension'];

  $uploadPath = uniqid(). ".". $extension;

  list($ret, $error) = $uploadMgr->putFile($token, $uploadPath, $localPath);

  if(! $error ){

    // 4. 将文章图片的地址替换为图床地址

    $content = str_replace($localPath, $url.$uploadPath, $content);

    echo "{$uploadPath} 上传成功。\n";

  } else {

    echo "{$uploadPath} 上传失败。\n";

  }

}

// 5. 保存替换后的文章

file_put_contents($file, $content);

使用

$ php index.php test.md

以上就是PHP脚本实现Markdown文章上传到七牛图床的详细内容,如果大家还有任何补充的内容可以联系三水点靠木小编。

PHP 相关文章推荐
PHP 面向对象 final类与final方法
May 05 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php中explode函数用法分析
Nov 15 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
php中define用法实例
Jul 30 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 #PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 #PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 #PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 #PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 #PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 #PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 #PHP
You might like
香妃
2021/03/03 冲泡冲煮
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
详解python函数传参是传值还是传引用
2018/01/16 Python
python3.5绘制随机漫步图
2018/08/27 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Django 重写用户模型的实现
2019/07/29 Python
python类的实例化问题解决
2019/08/31 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
2014年酒店工作总结范文
2014/11/17 职场文书
合作意向协议书
2015/01/29 职场文书
销售工作决心书
2015/02/04 职场文书
个人年终总结结尾
2015/03/06 职场文书
千与千寻观后感
2015/06/04 职场文书
病假证明模板
2015/06/19 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
高一地理教学工作总结
2015/08/12 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python