2

GeSHi をマークダウンで動作させようとしています。

Geshi の簡単な使い方は次のとおりです。

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

上記のコードはメッセージ全体を取り込み、それを強調表示されたコードに変換します

Markdown関数もあります

print Markdown($message);

マークダウンから返され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

これは、次のように、コードを強調表示するためにシバンでマークされたブロックを追加する通常のマークダウン プラグインに基づいています。

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

かなりうまく機能し、私は自分のブログで定期的に使用しています。

于 2011-04-03T14:51:45.160 に答える
0

Markdown を拡張して、GeSHi 構文強調表示のサポートを追加しようとしていたことを理解しています。Beautifyは、これ以上のことを行います。たとえば、DOTでグラフをレンダリングできます。

GeSHi コード ブロックに対する Beautify のアプローチは、「フェンス」が使用されるという点でdrm/Markdown_Geshiとは異なります。例えば:

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

この質問がアクティブだったときに Beautify があったかどうかはわかりませんが、回答で言及する価値があるようです。

于 2013-12-05T06:01:27.887 に答える
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 に答える