首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geshi和Markdown

Geshi和Markdown
EN

Stack Overflow用户
提问于 2010-11-18 17:10:15
回答 3查看 788关注 0票数 2

我正试着让GeSHi和减价一起工作。

Geshi的简单用法如下:

代码语言:javascript
复制
$geshi = new GeSHi($message, 'c');
print $geshi->parse_code();

以上代码接受整个消息并将其转换为高亮显示的代码。

我也有我的标记函数

代码语言:javascript
复制
print Markdown($message);

我试图使用回调函数来preg_match从标记返回的<pre>标记,并在返回的值上运行geshi->parse_code();函数。

这是我的密码

代码语言:javascript
复制
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']));

我在正确的轨道上吗?

是我的Regex对吗?,它在http://gskinner.com/RegExr/上工作

谢谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-18 17:34:02

这是裁判官:

而不是

代码语言:javascript
复制
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism 

使用(移除全局标志)

代码语言:javascript
复制
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism 

但是,如果您使用的是标记,您必须记住补偿那些独立的code块,因此您只需要替换那些以<pre><code>...MyCode</code></pre>格式的块,并且省略Hello <code>MyCode</code>,因此您需要以下内容

代码语言:javascript
复制
'/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',
票数 0
EN

Stack Overflow用户

发布于 2011-04-03 14:51:45

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

格什

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

代码语言:javascript
复制
#!php
<?php print('This is PHP code'); ?>

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

票数 3
EN

Stack Overflow用户

发布于 2013-12-05 06:01:27

我知道您希望扩展Markdown,增加对GeSHi语法突出显示的支持。美化会做这个和更多的事情。例如,它可以在中呈现图形。

美化GeSHi代码块的方法与格什的不同之处在于使用了“栅栏”。例如:

代码语言:javascript
复制
~~~ php
<?php print('This is PHP code'); ?>
~~~

我不确定Beautify在这个问题活跃的时候是否在后面,但它似乎值得在一个答案中提及。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4217581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档