Для некоторых тегов HTML, вы можете просто сделать string.Replace
. BBCode во многих отношениях представляет собой всего лишь 1: 1 отображение тега для тега, например, <b>
и </b>
отображение на [B]
и [/B]
соответственно. Так что это легко сделать с помощью:
html.Replace("<b>", "[b]").Replace("</b>", "[/b]")
Если это действительно простой HTML, и вы не возражаете против влияния на производительность и уродливость кода при выполнении этого тега за тегом, сделайте это. Но остерегайтесь уязвимостей межсайтового скриптинга, если вы планируете отображать полученный BBCode где-нибудь на веб-странице; этого недостаточно для очистки.
Но даже не пытайтесь использовать регулярные выражения для очистки HTML и выполнять автоматическую замену всех тегов. Например, тег <img>
выглядит совершенно иначе в HTML и BBCode. В HTML это <img src="..."/>
(конечный слеш необязательный), а в BBCode это [IMG]...[/IMG]
. Делать это с помощью регулярных выражений ... ну, скажем так, неоптимально.
Регулярные выражения предназначены для обычных языков, и HTML не является обычным языком, это язык без контекста. Вместо этого рассмотрите возможность использования фактического анализатора HTML, например HTML Agility Pack . Затем вы можете спуститься по дереву DOM, внести в белый список нужные элементы и сопоставить их с BBCode или любым другим, как вам нравится.