SegmentFault Markdown 解析库 HyperDown 发布

17

Github地址为:
https://github.com/SegmentFault/HyperDown

为何要写这样一个解析器

Markdown已经面世许多年了,国内外许多大大小小的网站都在用它,但是它的解析器却依然混乱不堪。SegmentFault 是中国较大规模使用 Markdown 语法的网站,我们一直在使用一些开源类库,包括但不限于

  1. php-markdown
  2. CommonMark for PHP
  3. Parsedown

他们都有或多或少的毛病,有的性能较差,有的代码比较业余,更多的情况是由于Markdown本身解析比较复杂,因此我们几乎无法去维护另外一个人写的代码。基于这个原因,我为 SegmentFault 专门编写了这么一个Markdown解析器。

使用方法

与常规的解析类库没有任何区别

php$parser = new HyperDown\Parser;
$html = $parser->makeHtml($text);

当前支持的语法

  • 标题
  • 列表(可递归)
  • 引用(可递归)
  • 缩进风格的代码块
  • Github风格的代码块
  • 各种行内文字加粗,斜体等效果
  • 链接,图片
  • 自动链接
  • 段内折行
  • 脚标
  • 分隔符

即将支持的语法

  • 表格

目前代码还处于测试阶段,欢迎大家提出bug和建议。


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

Mr_Jing · 2015年08月13日

好的,决定就用这个了。使用 Markdown 的大户,不担心出了 bug 你们不会更新,哈哈

+1 回复

AlexChen · 2015年08月15日

看看这个,评论区已经给出了解决办法。求助:我在sf上的的提问无法显示所有内容。

回复

alsiso · 2015年08月16日

表格的行合并会出现问题

回复

joyqi 作者 · 2015年08月16日

请说明具体问题

回复

人面桃花 · 2015年08月19日

代码不能高亮么?

回复

xaero · 2016年03月13日

有个bug,貌似这样的代码代码中的"\n"会被吃掉,看了一下是因为explode("\n",$text)

cout << a+b << '\n';

(sf官方难道不是用hyperdown?居然不会被吃掉!)

回复

SevenOutman · 2016年05月19日

希望增加md中引用远程md的功能,就像图片链接那样。有时候希望在文章中插入自己Github仓库里的README,直接复制过来的话,如果后面会更新的话,并不能同步过来。所以希望能加入这样的功能。

回复

simfar · 2016年09月26日

代码段好像不能自动换行,另外怎么让代码高亮显示?

回复

明月登楼 · 2017年10月20日

Typecho 里如何使用HyperDown呢?

回复

载入中...