Geshi с удовольствием
-
26-09-2019 - |
Вопрос
Я пытаюсь заставить 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'); ?>
~~~
Я не уверен, был ли украсить вокруг, когда этот вопрос был активным, но казалось достойным упоминания в ответе.