質問

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/

助けてくれてありがとう

役に立ちましたか?

解決 2

それはだった正規表現:(

の代わりに

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

使用(グローバルフラグを削除)

/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism 
あなたはマークダウンを使用している場合は、

しかし、あなたはthier自身であるcodeブロックを補うために覚えているので、あなたは<pre><code>...MyCode</code></pre>の形式で、Hello <code>MyCode</code>を残すため、あなたが次のことを必要とするものだけを交換する必要があります

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

他のヒント

は、今後の参考のために、あなたは、このための私のプラグインをチェックアウトする場合があります

https://github.com/drm/Markdown_Geshiする

これは、このように、ハイライトのコードにシェバングでマークされたブロックを追加するプラグイン通常の値下げに基づいています:

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

作品はかなりよく、私は定期的に自分のブログにそれを使用します。

私はあなたがGeSHi構文強調表示のためのサポートを追加し、値下げを拡張するために探して[た]ことを理解しています。 美しくの本以上を行います。例えば、それは DOTするのグラフをレンダリングすることができます。

「フェンス」が使用されていることを DRM / Markdown_GeshiするからGeSHiコードブロックが異なるに美しくのアプローチ。たとえばます:

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

この質問はアクティブであったとき、美しくバックの周りだったが、それは答えに言及する価値があるように見えた場合、私はないと確信しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top