GeSHi con Markdown
-
26-09-2019 - |
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
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.