Какой самый простой способ конвертировать вики-разметку в HTML? - PullRequest
11 голосов
/ 05 сентября 2008

Я создаю веб-сайт, который требует базовых возможностей разметки. Я не могу использовать сторонние плагины, поэтому мне просто нужен простой способ конвертировать разметку в 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 ]

6 голосов
/ 05 сентября 2008

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

4 голосов
/ 05 сентября 2008

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

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

Например

replace the pattern ==([^=]*)== with <h2>\1</h2>
1 голос
/ 09 декабря 2013

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

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

1 голос
/ 05 сентября 2008

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

1 голос
/ 05 сентября 2008

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

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

0 голосов
/ 11 июля 2011

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

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

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

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

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

0 голосов
/ 05 сентября 2008

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

...