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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top