Maison >développement back-end >tutoriel php >Script PHP pour implémenter les articles Markdown téléchargés sur Qiniu Picture Bed

Script PHP pour implémenter les articles Markdown téléchargés sur Qiniu Picture Bed

藏色散人
藏色散人avant
2020-02-10 13:35:252712parcourir

Après avoir utilisé Markdown pour rédiger des articles, vous devez souvent les publier sur différentes plateformes. Vous rencontrerez ici un problème. Les images de l'article doivent être téléchargées manuellement, ce qui est donc très gênant à gérer. Il est recommandé de télécharger les images sur l'image. De cette manière, un article peut être facilement synchronisé avec les principales plateformes. Ensuite, utilisez PHP pour implémenter cette fonction et utilisez Qiniu Cloud comme lit d'image

Créez et entrez le projet

$ mkdir markdown-images-to-qiniu
$ cd markdown-images-to-qiniu

Installez l'extension officielle Qiniu

$ composer require qiniu/php-sdk

L'idée d'implémentation est très simple

● Lire le fichier makrdown

● Faire correspondre régulièrement toutes les images

● Télécharger les images dans l'ordre

● Remplacer l'adresse de l'image de l'article avec l'adresse du lit d'image

● Enregistrez l'article remplacé

Ce qui suit est l'implémentation spécifique. Tout d'abord, créez le script index.php dans le répertoire du projet,

<?php
require &#39;vendor/autoload.php&#39;;
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(
    &#39;/\!\[.*\]\(.+\)/&#39;,
    $orginalContent,
    $matches,
    PREG_PATTERN_ORDER
);
$mdImageArr = $matches[0];
if(! count($mdImageArr) ){
    return "无需上传图片";
}
// 3. 依次上传图片
$accessKey = &#39;你的 AccessKey&#39;;
$secretKey = &#39;你的 SecretKey&#39;;
$bucket = &#39;你的七牛空间名&#39;; // 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, &#39;](&#39;) + 2;
    $localPath = mb_substr($image, $start, -1);
    $extension = pathinfo($localPath)[&#39;extension&#39;];
    $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);

utilisez.

$ php index.php test.md

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer