Geshi mit Markdown
-
26-09-2019 - |
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
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.