开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[软件开发讨论] 记一次临时开发经历-PHP开发语法转换工具

 发表于 2024-6-13 15:12:54|显示全部楼层|阅读模式 IP:湖南省
本帖最后由 一只晨月鸭 于 2024-6-13 15:15 编辑

原文链接:https://www.mengze2.cn/post/558.html

最近不是把博客的一些文章从和HTML转到Markdown了吗,因为之前换到了wordpress所以是HTML,但是这些文章再typecho无法被解析,于是就打算开发一个Markdown2HTML工具
下面使我的开发笔记,可能比较含糊
项目结构
一般情况下,我不会这么干,但是为了文章,还是需要定义的项目结构:
  1. markdown2html/

  2. ├── index.php
  3. ├── convert.php
  4. ├── styles/
  5. │   └── bootstrap.min.css
  6. └── js/
  7.     └── bootstrap.bundle.min.js
复制代码

- index.php: 前端页面,包含输入框和按钮。
- convert.php: 后端逻辑处理,将HTML转换为Markdown或将Markdown转换为HTML。
- styles/: 存放CSS文件。
- js/: 存放JavaScript文件。
准备工作
下载Bootstrap
Bootstrap官方网站下载最新版本的Bootstrap,并将bootstrap.min.css放入styles/文件夹,将bootstrap.bundle.min.js放入js/文件夹。也就是所谓的按需导入
编写前端页面 (index.php)
编写前端页面,包含一个文本输入框和两个按钮,分别用于将HTML转换为Markdown和将Markdown转换为HTML。这里不要求好看,而且需要快速开发响应式页面,所以选择bootstrap
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>HTML & Markdown Converter</title>
  7.     <link rel="stylesheet" href="styles/bootstrap.min.css">
  8. </head>
  9. <body>
  10.     <div class="container mt-5">
  11.         <h1 class="text-center">HTML & Markdown Converter</h1>
  12.         <form id="convertForm" method="post">
  13.             <div class="mb-3">
  14.                 <label for="inputText" class="form-label">Input Text</label>
  15.                 <textarea class="form-control" id="inputText" name="inputText" rows="10"></textarea>
  16.             </div>
  17.             <div class="d-flex justify-content-between">
  18.                 <button type="button" class="btn btn-primary">HTML转Markdown</button>
  19.                 <button type="button" class="btn btn-secondary">Markdown转HTML</button>
  20.             </div>
  21.             <div class="mt-3">
  22.                 <label for="outputText" class="form-label">Output Text</label>
  23.                 <textarea class="form-control" id="outputText" name="outputText" rows="10" readonly></textarea>
  24.             </div>
  25.         </form>
  26.     </div>
  27.    
  28.     <script src="js/bootstrap.bundle.min.js"></script>
  29.     <script>
  30.         function convert(action) {
  31.             const form = document.getElementById('convertForm');
  32.             const formData = new FormData(form);
  33.             formData.append('action', action);

  34.             fetch('convert.php', {
  35.                 method: 'POST',
  36.                 body: formData
  37.             })
  38.             .then(response => response.text())
  39.             .then(data => {
  40.                 document.getElementById('outputText').value = data;
  41.             });
  42.         }
  43.     </script>
  44. </body>
  45. </html>
复制代码

编写后端逻辑 (convert.php)
接下来,编写后端逻辑,将HTML转换为Markdown或将Markdown转换为HTML。
  1. <?php
  2. require 'vendor/autoload.php'; // 使用Composer加载依项

  3. use League\HTMLToMarkdown\HtmlConverter;
  4. use Michelf\Markdown;

  5. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  6.     $inputText = $_POST['inputText'];
  7.     $action = $_POST['action'];

  8.     if ($action === 'html2markdown') {
  9.         $converter = new HtmlConverter();
  10.         $outputText = $converter->convert($inputText);
  11.     } elseif ($action === 'markdown2html') {
  12.         $outputText = Markdown::defaultTransform($inputText);
  13.     }

  14.     echo $outputText;
  15. }
  16. ?>
复制代码

添加依赖
需要安装两个PHP库来实现转换功能:
Composer是一个包管理器,类似node的npm,和我发现PHP和Vue有异曲同工之妙

- league/html-to-markdown: 将HTML转换为Markdown。
- michelf/php-markdown: 将Markdown转换为HTML。
在项目根目录下创建一个composer.json文件,内容如下:
  1. {
  2.     "require": {
  3.         "league/html-to-markdown": "^5.0",
  4.         "michelf/php-markdown": "^1.9"
  5.     }
  6. }
复制代码

然后运行composer install来安装这些依赖。
  1. composer install
复制代码

最终效果
启动本地服务器(例如使用php -S localhost:8000),访问http://localhost:8000/,就可以看到转换工具的界面了。
苦力怕论坛,感谢有您~
 发表于 2024-6-13 17:26:20 来自手机|显示全部楼层 IP:江西省
前排支持!
2#2024-6-13 17:26:20回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-24 15:57

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3