Геши с уценкой


Я пытаюсь заставить Геши работать с markdown.

Простое использование геши заключается в следующем:

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

Приведенный выше код принимает все сообщение целиком и превращает его в выделенный код

У меня также есть функция уценки

print Markdown($message);

Я пытался использовать функцию обратного вызова для preg_match тегов <pre>, возвращенных из markdown, и запустить функцию geshi->parse_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']));

На правильном ли я пути?

Это Мой Регулярное выражение правильно? оно работает на http://gskinner.com/RegExr/

Спасибо за помощь

Author: Angel.King.47, 2010-11-18

3 answers

Для дальнейшего использования вы можете проверить мой плагин для этого:

Https://github.com/drm/Markdown_Geshi

Он основан на обычном плагине markdown, добавляющем блок, помеченный символом, для выделения кода, например:

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

Работает довольно хорошо, и я регулярно использую его в своем собственном блоге.

 3
Author: drm, 2011-04-03 14:51:45

Это было регулярное выражение:(

Вместо

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

Использовать (удалить глобальный флаг)

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

Но если вы используете markdown, вы должны помнить, что нужно компенсировать блоки code, которые находятся самостоятельно, поэтому вам нужно заменить только те, которые находятся в формате <pre><code>...MyCode</code></pre> и исключить Hello <code>MyCode</code>, Поэтому вам нужно следующее

'/<pre.*?><code.*?>(.*?[<pre.*?><code.*?>.*<\/code><\/pre>]*)<\/code><\/pre>/ism',
 0
Author: Angel.King.47, 2010-11-18 17:34:02

Я понимаю, что вы [хотели] расширить уценку, добавив поддержку подсветки синтаксиса GeSHi. Украсить делает это и многое другое. Например, он может отображать графики в ТОЧКА.

Подход Beautify к блокам кода GeSHi отличается от drm/markdown_geshi тем, что используются "ограждения". Например:

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

Я не уверен, был ли Beautify в прошлом, когда этот вопрос был активным, но он показался достойным упоминания в ответе.

 0
Author: Adam Monsen, 2013-12-05 06:01:27