2

我试图让 GeSHi 与降价合作。

Geshi 的一个简单用法如下:

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

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

我也有我的 Markdown 函数

print Markdown($message);

我试图对从markdown返回preg_match的标签使用回调函数并在返回的值上运行该函数<pre>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/

谢谢您的帮助

4

3 回答 3

3

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

https://github.com/drm/Markdown_Geshi

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

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

效果很好,我经常在我自己的博客上使用它。

于 2011-04-03T14:51:45.160 回答
0

这是正则表达式:(

代替

/<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',
于 2010-11-18T17:34:02.793 回答
0

我了解您 [were] 希望扩展 Markdown,添加对 GeSHi 语法突出显示的支持。美化可以做到这一点以及更多。例如,它可以在DOT中渲染图形。

Beautify 处理 GeSHi 代码块的方法与drm/Markdown_Geshi的不同之处在于使用了“栅栏”。例如:

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

我不确定当这个问题出现时 Beautify 是否回来了,但在答案中似乎值得一提。

于 2013-12-05T06:01:27.887 回答