首先,我知道有很多Markdown解析器。比如Parsedown(这个是用下来最好的),还有Michelf's PHP Markdown。但是由于项目需要在多处使用(不仅仅是发布文章的地方),所以需要能够自由定制的,还能跟项目配合的好。
在决定发这个帖子之前,我已经琢磨着自己写解析器很久了,但是进展缓慢,(一边玩一边写 + 本来数学就不好的掩面),特别是今天发现之前写的Tokenizer没办法完全满足要求可能需要重新设计(主要是通配符批匹配规则不完美)(艹,我都在写标签解析结果的渲染合并了)。于是我就有点小崩溃了……
要求是这样的:
- 可以关闭一些标签的解析,比如不允许解析 ` XXX ` 标签;
- 可以自定义产生的HTML代码(也就是说不一定是Markdown规范的输出代码);
- 可以设定一些标签解析的结果。比如可以设定 # 标题 # 从 H3开始,超过的就使用样式代替,这样可以在评论系统里方便的使用;
- 可以自行添加标签,然后自定义这个标签的解析器类。
比如我可以添加一个“附件”标记,格式类似于 +[附件标题](附件ID)。用户提交给解析器之后,解析器类会自动查询数据库找到这个附件,然后根据附件信息渲染成HTML输出到最终的渲染结果。
好吧,不知道有没有这样的,如果没有看来我只能硬着头皮重新写了。
PS:是的,我知道可以在得到渲染后的HTML里直接替换字符,但是……这样很明显不是最佳操作。
感谢!
在决定发这个帖子之前,我已经琢磨着自己写解析器很久了,但是进展缓慢,(一边玩一边写 + 本来数学就不好的掩面),特别是今天发现之前写的Tokenizer没办法完全满足要求可能需要重新设计(主要是通配符批匹配规则不完美)(艹,我都在写标签解析结果的渲染合并了)。于是我就有点小崩溃了……
要求是这样的:
- 可以关闭一些标签的解析,比如不允许解析 ` XXX ` 标签;
- 可以自定义产生的HTML代码(也就是说不一定是Markdown规范的输出代码);
- 可以设定一些标签解析的结果。比如可以设定 # 标题 # 从 H3开始,超过的就使用样式代替,这样可以在评论系统里方便的使用;
- 可以自行添加标签,然后自定义这个标签的解析器类。
比如我可以添加一个“附件”标记,格式类似于 +[附件标题](附件ID)。用户提交给解析器之后,解析器类会自动查询数据库找到这个附件,然后根据附件信息渲染成HTML输出到最终的渲染结果。
好吧,不知道有没有这样的,如果没有看来我只能硬着头皮重新写了。
PS:是的,我知道可以在得到渲染后的HTML里直接替换字符,但是……这样很明显不是最佳操作。
感谢!
