热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎样把SegmentFault目前的语法格式无缝转换为标准的Markdown格式

SF社区目前用的语法是基于wiki和markdown衍生的,已经不止一个人跟我提过这个东西比较诡异了,我目前想在问题数还不是那么多的时候把这个问题解决掉。也就是换成完全标准的Markdown语法。它的语法解析完全没啥问...
SF社区目前用的语法是基于wiki和markdown衍生的,已经不止一个人跟我提过这个东西比较诡异了,我目前想在问题数还不是那么多的时候把这个问题解决掉。也就是换成完全标准的Markdown语法。它的语法解析完全没啥问题,网上都有很成熟的解析库。

但是如何把现在的语法格式转换成标准的markdown呢?希望大家能给出完整的解决方案


就是希望能有一个php实现的class或者function,输入现在的语法文字输出Markdown格式文字

回复内容:

SF社区目前用的语法是基于wiki和markdown衍生的,已经不止一个人跟我提过这个东西比较诡异了,我目前想在问题数还不是那么多的时候把这个问题解决掉。也就是换成完全标准的Markdown语法。它的语法解析完全没啥问题,网上都有很成熟的解析库。

但是如何把现在的语法格式转换成标准的markdown呢?希望大家能给出完整的解决方案


就是希望能有一个php实现的class或者function,输入现在的语法文字输出Markdown格式文字

关于这个,我记得我之前有提到过一个想法,就是通过元标记来辨别,类似于 vim 的 modeline。

从某个时间点开始,旧的内容头部统一添加类似 “!!syntax:sgwiki” 这样的标记用以区别旧的 wiki 语法,新的内容默认使用 markdown 撰写。当然,也可以支持更多的轻量的语法标记,不局限于 markdown,只要头部有相应的元标记即可。比如,“!!syntax:markdown” "!!syntax:multimarkdown" 等等。

十分不建议做自动的语法转换,这就好比用 RegEx 解析 HTML 一个道理,因为你永远也不可能考虑全部的情况,而且,最好保持用户的输入 intact,只提供兼容机制。这是最简单的方案。

与其做转换, 不如给每个文字条目都加一个语法属性. 老的条目默认记录为老语法, 新的条目记录为markdown. 输出页面的时候根据语法属性调用不同的解析库就好了. 当然未来也可以支持更多的语法, 但意义不大, markdown已经够大众了.

btw, 推荐用GFM https://help.github.com/articles/gith...

方案:界面上渲染出的是html,如果把现在语法渲染后得到的界面上的html转成markdown呢?然后将库洗一遍。

最终的效果是不是这样的:界面上提供一个markdown语法的editor,然后从这个新editor上线后,对于以前的数据,用户点击‘编辑’时出现的是markdown的语法格式,对于以后新添的数据,也是用markdown语法编辑。

如果是这样的话:

  • 需要把以前的数据洗库,用上面的方案是最合适的,用户感觉不到功能更改的疼痛。
  • 使用目前界面上的以前的语法渲染的html,将这些tml转化为markdown格式数据,然后用它清洗数据库里的旧数据,能保证样式不会发生多大变化。
  • 不需要再在界面上添加两套编辑器语法和转换程序。

洗库的工作量也是很大吧 , 支持 咳嗽di小鱼 , 这样最简单了 ,几步既可搞定, 功能扩展优于数据重构。

推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
author-avatar
叫我刘大贱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有