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

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

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

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

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

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

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

7 ответов

Решение

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

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

Например

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

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

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

Самое приятное то, что вся работа сделана для вас, если вы включите этот источник в свой проект. Это очень мало; в основном один вызов метода для преобразования фрагмента текста в HTML.

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

Может быть, это то, что вам нужно.

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

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

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

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

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

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

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

Другие вопросы по тегам