Какой самый простой способ конвертировать Wiki-разметку в HTML?

Я создаю веб-сайт, который требует очень простых возможностей разметки. Я не могу использовать сторонние плагины, поэтому мне просто нужен простой способ конвертировать разметку в HTML. У меня может быть всего 3 тега, которые я разрешу.

Каков наилучший способ преобразования ==Heading== в <h2>Heading</h2> или --bold-- в <b>bold</b>? Можно ли это сделать просто с помощью Regex, или у кого-то есть простая функция?

Я пишу это на С#, но примеры из других языков, вероятно, будут работать.

Последующие действия: Это такая небольшая часть моего сайта, что мне понравилась простота использования простой замены Regex. Я сделал эту работу на С# со следующим кодом:

string html = Regex.Replace("==This will be inside h2==", "==([^=]*)==", "< h2>$1< /h2>")

.NET использует $1 нотацию вместо обозначения \1, которая используется на других языках.

Ответ 1

Это не простая проблема, потому что, если вы собираетесь отображать информацию для пользователя, вам также нужно будет дезинформировать ввод, чтобы вы не создали уязвимости межсайтового скриптинга.

Тем не менее, вы, вероятно, могли бы сделать что-то довольно простое, поскольку вы легко описываете замену регулярных выражений.

Например

replace the pattern ==([^=]*)== with <h2>\1</h2>

Ответ 2

Существует также perl module и php project для этого. Исходный код может быть полезен при разработке собственного решения.

Ответ 3

Я использую Markdown (тот же легкий язык разметки, который используется на этом сайте). Для С# имеется очень хороший бит исходного кода здесь. Он полностью поддерживает Markdown, хотя он, похоже, не поддерживается. Но пока это работает очень хорошо, и это бесплатно с открытым исходным кодом.

Лучшая часть - это все, что вам нужно сделать, если вы включите этот источник в свой проект. Он очень маленький; в основном один вызов метода для преобразования куска текста в HTML.

Ответ 4

Это действительно зависит от синтаксиса Wiki, который вы используете, поскольку есть несколько разных. Очевидно, что программное обеспечение wiki имеет эту функциональность где-то; если вы не можете найти пакет программного обеспечения, который сделает это за вас, вы можете начать поиск соответствующего кода в своем вики-программном обеспечении.

Ответ 5

Вероятно, переполняйте для своих тэгов 3, но если он взорвется на полноценный язык разметки, и регулярное выражение начинает выглядеть страшно, тогда вы можете рассмотреть antlr

Ответ 6

Как сказал Джозеф, Markdown - лучшее решение для решения проблемы с текстом в html.

MarkdownSharp является легким, простым в использовании и хорошо протестированным, так как это реализация stackoverflow!

new Markdown().Transform("**markdown text**");

http://blog.stackoverflow.com/2009/12/introducing-markdownsharp/

Подробнее о синтаксисе Markdown - http://en.wikipedia.org/wiki/Markdown

Ответ 7

Возможно, это, что вам нужно.

Эта страница представляет собой сборник ссылок, описаний и отчетов о состоянии различных альтернативных парсеров MediaWiki, то есть программ и проектов, за исключением самой MediaWiki, которые могут или предназначены для перевода синтаксиса разметки текста MediaWiki во что-то другое.