代码之家  ›  专栏  ›  技术社区  ›  Angel.King.47

加价格西

  •  2
  • Angel.King.47  · 技术社区  · 15 年前

    我想让格希和马克一起工作。

    Geshi的简单用法如下:

    $geshi = new GeSHi($message, 'c');
    print $geshi->parse_code();
    

    上面的代码接受整个消息并将其转换为突出显示的代码

    我还有减价功能

    print Markdown($message);
    

    我试图使用回调函数 preg_match 这个 <pre> 标记从markdown返回并运行 geshi->parse_code(); 返回值的函数

    这是我的密码

    print preg_replace_callback(
       '/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism',
        create_function(
            // single quotes are essential here,
            // or alternative escape all $ as \$
            '$matches',
            '$geshi = new GeSHi($matches[0], \'php\'); return $geshi->parse_code()'
        ),
        Markdown($blog_res['message']));
    

    我走对了吗?

    我的瑞格鞋对吗? 它工作在 http://gskinner.com/RegExr/

    谢谢你的帮助

    3 回复  |  直到 12 年前
        1
  •  3
  •   drm    15 年前

    为了将来参考,您可能需要检查我的插件:

    https://github.com/drm/Markdown_Geshi

    它基于常规的降价插件添加一个用shebang标记的块来突出显示代码,如下所示:

    #!php
    <?php print('This is PHP code'); ?>
    

    工作得很好,我经常在自己的博客上使用它。

        2
  •  0
  •   Angel.King.47    15 年前

    是雷杰克斯:(

    而不是

    /<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism 
    

    使用(删除全局标志)

    /<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism 
    

    但是如果你使用降价,你必须记住补偿 code 因此,您只需替换格式为的块。 <pre><code>...MyCode</code></pre> 遗漏 Hello <code>MyCode</code> 因此,您需要以下内容

    '/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',
    
        3
  •  0
  •   Adam Monsen    12 年前

    我知道你想扩展markdown,增加对geshi语法突出显示的支持。 Beautify 做这个和更多。例如,它可以在 DOT .

    美化的方法格西代码块不同于 drm/Markdown_Geshi 在那里面用的是“篱笆”。例如:

    ~~~ php
    <?php print('This is PHP code'); ?>
    ~~~
    

    我不确定当这个问题被激活时,美化是否在后面,但它似乎值得在回答中提及。