求个 PHP 下好用的 Markdown 解析器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
raincious
V2EX    PHP

求个 PHP 下好用的 Markdown 解析器

  •  
  •   raincious Oct 6, 2014 5358 views
    This topic created in 4224 days ago, the information mentioned may be changed or developed.
    首先,我知道有很多Markdown解析器。比如Parsedown(这个是用下来最好的),还有Michelf's PHP Markdown。但是由于项目需要在多处使用(不仅仅是发布文章的地方),所以需要能够自由定制的,还能跟项目配合的好。

    在决定发这个帖子之前,我已经琢磨着自己写解析器很久了,但是进展缓慢,(一边玩一边写 + 本来数学就不好的掩面),特别是今天发现之前写的Tokenizer没办法完全满足要求可能需要重新设计(主要是通配符批匹配规则不完美)(艹,我都在写标签解析结果的渲染合并了)。于是我就有点小崩溃了……

    要求是这样的:
    - 可以关闭一些标签的解析,比如不允许解析 ` XXX ` 标签;
    - 可以自定义产生的HTML代码(也就是说不一定是Markdown规范的输出代码);
    - 可以设定一些标签解析的结果。比如可以设定 # 标题 # 从 H3开始,超过的就使用样式代替,这样可以在评论系统里方便的使用;
    - 可以自行添加标签,然后自定义这个标签的解析器类。
    比如我可以添加一个“附件”标记,格式类似于 +[附件标题](附件ID)。用户提交给解析器之后,解析器类会自动查询数据库找到这个附件,然后根据附件信息渲染成HTML输出到最终的渲染结果。

    好吧,不知道有没有这样的,如果没有看来我只能硬着头皮重新写了。

    PS:是的,我知道可以在得到渲染后的HTML里直接替换字符,但是……这样很明显不是最佳操作。

    感谢!
    8 replies    2014-10-24 14:43:27 +08:00
    skydiver
        2
    skydiver  
       Oct 6, 2014 via Android
    你这些功能可以自己改代码实现吧……随便找个就行,自己改
    raincious
        3
    raincious  
    OP
       Oct 6, 2014
    @skydiver

    就是不想修改,因为版权问题还有维护性。不过发现了cebe's Markdown,MIT协议的,但是好像还是不很灵活。先试试看吧。
    cchange
        4
    cchange  
       Oct 6, 2014
    你头像应该是对付处女座的吧
    zhangxiao
        5
    zhangxiao  
       Oct 6, 2014
    我就是单纯的说下,不由自主的点了下头像...
    spacewander
        6
    spacewander  
       Oct 6, 2014
    LZ头像太evil了
    Jefei
        7
    Jefei  
       Oct 7, 2014
    parsedown
    vus520
        8
    vus520  
       Oct 24, 2014
    pandoc
    About     Help     Advertise     Blog     API     FAQ     Solana     837 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 21:30 PVG 05:30 LAX 14:30 JFK 17:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86