Geshi con Markdown
-
26-09-2019 - |
Pregunta
Im tratando de obtener GeSHi de trabajo con reducción del precio.
Un uso simple para Geshi es como sigue:
$geshi = new GeSHi($message, 'c');
print $geshi->parse_code();
El código anterior toma en el conjunto del mensaje y lo convierte en código en negrita ??p>
También tengo a mi función de rebajas
print Markdown($message);
Yo estaba tratando de utilizar la función de volver a la llamada preg_match
las etiquetas <pre>
regresado de rebajas y ejecutar la función geshi->parse_code();
en los valores devueltos
Aquí está mi código
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']));
¿Estoy en el camino correcto?
Regex es mi derecho? http://gskinner.com/RegExr/
Gracias por la ayuda
Solución 2
era la expresión regular: (
en lugar de
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/gism
utilización (quitar el indicador global)
/<pre.*?>(.*?[<pre.*?>.*<\/pre>]*)<\/pre>/ism
Sin embargo, si está utilizando reducción del precio, usted tiene que recordar para compensar los bloques code
que están en emabrgo propia, por tanto, es necesario sustituir sólo los que están en el formato de <pre><code>...MyCode</code></pre>
y dejar de lado Hello <code>MyCode</code>
Por lo tanto se necesitan los siguientes
'/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',
Otros consejos
En el futuro, es posible que desee echa un vistazo a mi blog a más de esto:
https://github.com/drm/Markdown_Geshi
Se basa en la reducción del precio regular de plug-in de añadir un bloque marcado con un tinglado de código más destacado, como esto:
#!php
<?php print('This is PHP code'); ?>
funciona bastante bien y lo uso en mi propio blog con regularidad.
entiendo que [eran] busca extender de rebajas, añadiendo soporte para resaltado de sintaxis GeSHi. Embellecer hace esto y más. Por ejemplo, se puede hacer que los gráficos en DOT .
se utiliza el enfoque de Embellecer a Geshi bloques de código difiere de DRM / Markdown_Geshi en que los "cercos". Por ejemplo:
~~~ php
<?php print('This is PHP code'); ?>
~~~
No estoy seguro de si era Embellecer alrededor de la espalda cuando esta pregunta estaba activo, pero parecía digno de mención en una respuesta.