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 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
一个PHP数组应该有多大的分析
Jul 30 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php Session存储到Redis的方法
Nov 04 PHP
php去除字符串换行符示例分享
Feb 13 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php 基础函数
Feb 10 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP 实现缩略图
Mar 09 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中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
python妹子图简单爬虫实例
2015/07/07 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
竞选班干部的演讲稿
2014/04/24 职场文书
美化环境标语
2014/06/20 职场文书
实习护士自荐信
2014/06/21 职场文书
单位委托书怎么写
2014/08/02 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
2015年中秋寄语
2015/07/31 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP