Domanda

Nel tentativo di ottenere GeSHi al lavoro con Markdown.

Un uso semplice per Geshi è la seguente:

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

Il codice di cui sopra prende in tutta messaggio e lo trasforma in codice evidenziato

ho anche la mia Markdown Funzione

print Markdown($message);

Stavo cercando di utilizzare la funzione di nuovo chiamata a preg_match i tag <pre> tornati da Markdown ed eseguire la funzione geshi->parse_code(); sui valori restituiti

Ecco il mio codice

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

Sono sulla strada giusta?

è il mio Regex giusto? funziona su http://gskinner.com/RegExr/

Grazie per l'aiuto

È stato utile?

Soluzione 2

è stata la regex: (

anziché

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

uso (rimuovere il flag globale)

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

Ma se si utilizza Markdown, si deve ricordare per compensare i blocchi code che si trovano sul loro proprio, pertanto è necessario sostituire solo quelli che sono nel formato di <pre><code>...MyCode</code></pre> e lasciare fuori Hello <code>MyCode</code> Pertanto sono necessari i seguenti

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

Altri suggerimenti

per riferimento futuro, si potrebbe voler controllare il mio plug-in per questo:

https://github.com/drm/Markdown_Geshi

E 'basato sul mark-down regolare plug l'aggiunta di un blocco selezionato con uno shebang al codice di evidenziare, in questo modo:

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

funziona piuttosto bene e lo uso sul mio blog regolarmente.

Capisco che si [erano] cercando di estendere Markdown, aggiungendo il supporto per GeSHi l'evidenziazione della sintassi. Beautify fa questo e altro ancora. Ad esempio, si può rendere grafici in DOT .

L'approccio di abbellire per GeSHi blocchi di codice differisce da DRM / Markdown_Geshi fatto che "recinzioni" vengono utilizzati. Ad esempio:

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

Non sono sicuro se Abbellire era intorno indietro quando questa domanda era attivo, ma sembrava degno di menzione in una risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top