마크다운을 사용하여 기사를 작성한 후 다른 플랫폼에 게시해야 하는 경우가 많습니다. 여기서 기사의 사진을 수동으로 업로드해야 하므로 관리가 매우 불편합니다. 사진을 사진 침대에 업로드하세요. 이 경우 기사는 주요 플랫폼과 쉽게 동기화될 수 있습니다. 다음으로, PHP를 사용하여 이 기능을 구현하고, Qiniu Cloud를 이미지 베드로 사용합니다
프로젝트 생성 및 입력
$ mkdir markdown-images-to-qiniu $ cd markdown-images-to-qiniu
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를 사용하세요.
위 내용은 Qiniu Image Bed에 업로드된 Markdown 기사를 구현하는 PHP 스크립트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!