Frage

Im Versuch GeSHi zur Arbeit mit Abschlag zu bekommen.

Eine einfache Anwendung für Geshi ist wie folgt:

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

Der obige Code nimmt in der gesamten Nachricht und wandelt es in Hervorgehoben Code

Ich habe auch meine Funktion Markdown

print Markdown($message);

Ich habe versucht, Rückruffunktion zu verwenden, um die preg_match Tags aus Abschlags zurück <pre> und die geshi->parse_code(); Funktion auf die zurückgegebenen Werte laufen

Hier ist mein 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']));

Bin ich auf dem richtigen Weg?

ist mein Regex nicht wahr? es funktioniert auf http://gskinner.com/RegExr/

Danke für die Hilfe

War es hilfreich?

Lösung 2

es war die regex: (

statt

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

Verwendung (entfernen Sie das globale Flag)

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

Aber wenn Sie Abschlags verwenden, müssen Sie für die code Blöcke zu kompensieren erinnern, die auf thier eigenen sind daher müssen Sie nur diejenigen ersetzen, die im Format von <pre><code>...MyCode</code></pre> sind und auszulassen Hello <code>MyCode</code> Deshalb müssen Sie die folgende

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

Andere Tipps

für die Zukunft, können Sie dieses mein Plugin überprüfen:

https://github.com/drm/Markdown_Geshi

Es basiert auf der regulären Abschlags-Plugin einen Block Hinzufügen mit einem Shebang Highlight Code markiert, wie folgt aus:

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

funktioniert recht gut und ich benutze es auf meinem eigenen Blog regelmäßig.

Ich verstehe, dass Sie [wurden] suchen Markdown zu erweitern, mit Unterstützung für GeSHi Syntaxhervorhebung. Verschönern tut dies und vieles mehr. Zum Beispiel kann es in Graphen DOT machen.

Verschönern Ansatz zur GeSHi Codeblöcke unterscheidet sich von drm / Markdown_Geshi dass „Zäune“ verwendet. Zum Beispiel:

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

Ich bin mir nicht sicher, ob Verschönern um zurück war, wenn diese Frage aktiv war, aber es schien erwähnens in einer Antwort würdigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top