Thinkphp5框架中引入Markdown编辑器操作示例


Posted in PHP onJune 03, 2020

本文实例讲述了Thinkphp5框架中引入Markdown编辑器操作。分享给大家供大家参考,具体如下:

编辑器下载地址以及演示:https://pandao.github.io/editor.md/

1.把下载的项目放在public目录下

2.页面中引入jquery.js,editormd.js,editormd.css

demo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>markdown测试</title>
  <link rel="stylesheet" href="/public/markdown/css/editormd.css" rel="external nofollow" />
  <script src="__JS__/jquery.min.js"></script>
  <script src="/public/markdown/editormd.js"></script>
</head>
<body>
  <form action="{:url('test')}" enctype="multipart/form-data" method='post'>
    <div id="content-editormd" class="form-group">
      <textarea style="display:none;" class="form-control" id="content-editormd-markdown-doc" name="content-editormd-markdown-doc"></textarea>
    </div>
    <button>提交</button>
  </form>
<script type="text/javascript">
  $(function() {
    editormd("content-editormd", {
      placeholder : '编辑你的内容...',
      width  : "100%",
      height : 1000,
      syncScrolling : "single",
      path  : "/public/markdown/lib/",
      watch  : true,
      previewTheme : "white",//预览
      theme : 'white',//工具栏
      saveHTMLToTextarea : true, // 保存HTML到Textarea
      // 图片上传
      imageUpload : true,
      imageFormats: ["jpg","jpeg","gif","png","bmp","webp"],
      imageUploadURL: "/api/Upload/markdownUpload",
        toolbarIcons : function() { //自定义工具栏,后面有详细介绍
     return editormd.toolbarModes['full']; // full, simple, mini
   },
    });
  });
//上传
/*
{
  success : 0 | 1,      // 0 表示上传失败,1 表示上传成功
  message : "提示的信息,上传成功或上传失败及错误信息等。",
  url   : "图片地址"    // 上传成功时才返回
}
*/
</script>
</body>
</html>

上传图片

public function markdownUpload(){
    $config = [
      'size' => 2097152,
      'ext' => 'jpg,gif,png,bmp'
    ];
 
    $file = $this->request->file('editormd-image-file');
    $upload_path = str_replace('\\', '/', ROOT_PATH . 'public/uploads');
    $save_path  = '/uploads/';
    $info    = $file->validate($config)->move($upload_path);
    if ($info) {
      $result = [
        'success' => 1,
        'message' => '上传成功',
        'url'  => str_replace('\\', '/', '/public/'.$save_path . $info->getSaveName())
      ];
    } else {
      $result = [
        'success'  => 0,
        'message' => $file->getError(),
        'url'  => str_replace('\\', '/', '/public/'.$save_path . $info->getSaveName())
      ];
    }
    return json($result);
  }

3.页面加载markdown格式内容

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>页面加载markdown格式内容</title>
 <link href="/public/markdown/css/editormd.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet" />
 <script src="__JS__/jquery.min.js"></script>
 <script src="/public/markdown/lib/marked.min.js"></script>
 <script src="/public/markdown/lib/prettify.min.js"></script>
 <script src="/public/markdown/lib/raphael.min.js"></script>
 <script src="/public/markdown/lib/underscore.min.js"></script>
 <script src="/public/markdown/lib/sequence-diagram.min.js"></script>
 <script src="/public/markdown/lib/flowchart.min.js"></script>
 <script src="/public/markdown/lib/jquery.flowchart.min.js"></script>
 <script src="/public/markdown/editormd.js"></script>
</head>
<body>
 <div id="doc-content">
 <textarea style="display:none;">
```php
 <?php
 
 echo 1;
 ?>
```
</textarea>
</div>
 
<script type="text/javascript">
  var testEditor;
  $(function () {
    testEditor = editormd.markdownToHTML("doc-content", {//注意:这里是上面div的id
      htmlDecode: "style,script,iframe",
      emoji: true,
      taskList: true,
      tocm: true,
      tex: true, // 默认不解析
      flowChart: true, // 默认不解析
      sequenceDiagram: true, // 默认不解析
      codeFold: true
    });});
 
</script>
</body>
</html>

4.直接展示html格式的内容

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>前端显示</title>
 <link href="/public/markdown/css/editormd.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet" />
 <script src="__JS__/jquery.min.js"></script>
 <script src="/public/markdown/lib/marked.min.js"></script>
 <script src="/public/markdown/lib/prettify.min.js"></script>
 <script src="/public/markdown/editormd.min.js"></script>
 
</head>
<body>
 <div id="doc-content">
 {:htmlspecialchars_decode($data)}
 </div>
<script type="text/javascript">
  $(function () {
    editormd.markdownToHTML("doc-content");
  })
</script>
</body>
</html>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
在PHP的图形函数中显示汉字
Oct 09 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
使用php实现截取指定长度
Aug 06 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 PHP
PHP数组基本用法与知识点总结
Jun 02 #PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 #PHP
PHP与Web页面交互操作实例分析
Jun 02 #PHP
PHP Web表单生成器案例分析
Jun 02 #PHP
一文看懂PHP进程管理器php-fpm
Jun 01 #PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 #PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 #PHP
You might like
PHP计数器的实现代码
2013/06/08 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
vue实现扫码功能
2020/01/17 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
js实现简单商品筛选功能
2021/02/02 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
flask实现验证码并验证功能
2019/12/05 Python
python全局变量引用与修改过程解析
2020/01/07 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
基层干部十八大感言
2014/01/19 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
社会工作专业自荐信
2014/09/26 职场文书
2014年学生会工作总结
2014/11/07 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang