Вопрос

Я пытаюсь заставить Geshi работать с Markdown.

Простое использование для Geshi следующее:

$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/

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

Это было полезно?

Решение 2

Это было регеекс :(

вместо

/<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',

Другие советы

Для будущего ссылки, вы можете захотеть проверить мой плагин для этого:

https://github.com/drm/markdown_geshi.

Он основан на регулярной плагине разметки, добавляя блок, отмеченный шебан, чтобы выделить код, как это:

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

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

Я понимаю, что вы [были] ищете расширять уценку, добавляя поддержку подсветки Geshi Syntax. Украсить делает это и больше. Например, он может представлять графики в Точка.

Подход украшения к блокам кода Geshi отличается от drm / markdown_geshi. В этих «заборах» используются. Например:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top