Geshi avec Markdown
-
26-09-2019 - |
Question
Im essayant de GeSHi à travailler avec démarquage.
Une utilisation simple pour Geshi est comme suit:
$geshi = new GeSHi($message, 'c');
print $geshi->parse_code();
Le code ci-dessus prend dans l'ensemble du message et il se transforme en code colorisé
J'ai aussi ma Markdown Fonction
print Markdown($message);
Je tentais d'utiliser la fonction de retour d'appel preg_match
les balises <pre>
retour de démarquage et exécutez la fonction geshi->parse_code();
sur les valeurs renvoyées
Voici mon 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']));
Suis-je sur la bonne voie?
droit est mon Regex? il fonctionne sur http://gskinner.com/RegExr/
Merci pour l'aide
La solution 2
il était l'expression rationnelle: (
au lieu de
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism
utilisation (enlever le drapeau global)
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism
Mais si vous utilisez démarquage, vous devez vous rappeler de compenser les blocs de code
qui sont sur Thier propres, vous devez donc remplacer uniquement ceux qui sont dans le format de <pre><code>...MyCode</code></pre>
et négligez Hello <code>MyCode</code>
donc les éléments suivants sont
'/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',
Autres conseils
pour référence ultérieure, vous pourriez vouloir vérifier mon plugin pour cela:
https://github.com/drm/Markdown_Geshi
Il est basé sur le démarquage régulier plug-in ajoutant un bloc marqué avec un tralala au code de surbrillance, comme ceci:
#!php
<?php print('This is PHP code'); ?>
fonctionne assez bien et je l'utilise sur mon propre blog régulièrement.
Je comprends que vous [été] cherche à étendre Markdown, l'ajout du support pour la mise en évidence de GeSHi. Embellissez fait cela, et plus encore. Par exemple, il peut rendre des graphiques dans DOT .
L'approche de Embellissez à GeSHi blocs de code diffère de drm / Markdown_Geshi que "clôtures" sont utilisées. Par exemple:
~~~ php
<?php print('This is PHP code'); ?>
~~~
Je ne sais pas si Embellissez était autour de retour lorsque cette question a été actif, mais il semblait digne de mention dans une réponse.