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

StackOverflow https://stackoverflow.com/questions/45991

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

Решение

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

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

Например

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

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

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

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

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

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

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

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

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

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

MarkdownSharp легок, прост в использовании и хорошо протестирован, поскольку представляет собой реализацию stackoverflow!

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

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

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

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