C# 如何在C中将html转换为BBcode#

C# 如何在C中将html转换为BBcode#,c#,html,bbcode,C#,Html,Bbcode,我需要将html文本转换为bbcode。在哪里可以找到我该怎么做?例如,我转换链接: regex = new Regex("<a href=\"(.+?)\">(.+?)</a>"); htmlCode = regex.Replace(htmlCode, "[URL]$1[/URL]"); regex=newregex(“”); 替换(htmlCode,“[URL]$1[/URL]”); 我如何转换bbcodes中的所有html标记(并替换为非bbcodes的空标

我需要将html文本转换为bbcode。在哪里可以找到我该怎么做?例如,我转换链接:

 regex = new Regex("<a href=\"(.+?)\">(.+?)</a>");
 htmlCode = regex.Replace(htmlCode, "[URL]$1[/URL]");
regex=newregex(“”);
替换(htmlCode,“[URL]$1[/URL]”);
我如何转换bbcodes中的所有html标记(并替换为非bbcodes的空标记,标记p

,而不是使用Regexs(无法解析html),尝试使用搜索DOM树并将相关HTML标记更改为BBCode。创建新的有效BBCode文档似乎是最困难的部分-也许有一些库可以帮助在某个地方创建有效的BBCode标记?

而不是使用Regexs(它永远无法解析HTML),尝试使用搜索DOM树并将相关HTML标记更改为BBCode。创建新的有效BBCode文档似乎是最困难的部分-也许有一些库可以帮助在某个地方创建有效的BBCode标记?

对于一些HTML标记,您只需执行一个简单的
字符串。替换
。BBCode在许多方面只是一个1:1,标记用于标记映射,例如分别映射到
[B]
[/B]

html.Replace("<b>", "[b]").Replace("</b>", "[/b]")
html.Replace(“,“[b]”)。Replace(“,”[/b]”)
如果它真的是非常简单的HTML,并且你不介意逐个标记对性能的影响和代码的丑陋性,那么就去做吧。但是如果你计划在某个网页上显示生成的BBCode,那么要小心跨站点脚本漏洞;这远远不足以进行清理

但是,甚至不用费心尝试使用正则表达式来清理HTML并自动替换所有标记。
(尾随斜杠是可选的),而在BBCode中它是
[IMG]…[/IMG]
。使用regex这样做是……好吧,让我们说是次优的

正则表达式是为正则语言设计的,HTML不是一种规则语言,它是一种上下文无关的语言。考虑使用一个实际的HTML解析器来代替它。然后你可以降下DOM树,把你想要的元素加起来,然后把它们映射到BBCODE或者任何你喜欢的任何东西。o一个简单的
string.Replace
。BBCode在很多方面只是一个1:1的标记对标记映射,例如
分别映射到
[B]
[/B]
。因此,只需:

html.Replace("<b>", "[b]").Replace("</b>", "[/b]")
html.Replace(“,“[b]”)。Replace(“,”[/b]”)
如果它真的是非常简单的HTML,并且你不介意逐个标记对性能的影响和代码的丑陋性,那么就去做吧。但是如果你计划在某个网页上显示生成的BBCode,那么要小心跨站点脚本漏洞;这远远不足以进行清理

但是,甚至不用费心尝试使用正则表达式来清理HTML并自动替换所有标记。
(尾随斜杠是可选的),而在BBCode中它是
[IMG]…[/IMG]
。使用regex这样做是……好吧,让我们说是次优的


正则表达式是为正则语言设计的,HTML不是一种规则语言,它是一种上下文无关的语言。考虑使用一个实际的HTML解析器来代替它。然后你可以降下DOM树,把你想要的元素加起来,然后把它们映射到BBCODE或其他任何你喜欢的东西。为解析DOM(也称为HtmlAgilityPack)而构建,但我需要一些可以使用.net内置工具的东西,而不必引用外部dll

所以我用c语言编写了一个转换器,它通过正则表达式来实现


这是我的总结

我知道您假设使用一个为解析DOM(又称HtmlAgilityPack)而构建的工具,但我需要一些可以使用.net中内置的工具而不必引用外部dll的工具

所以我用c语言编写了一个转换器,它通过正则表达式来实现


这是我写的

我知道,我读过这篇文章。但是。我有用户输入。用户将以正常格式输入到程序html。我使用用户输入格式。我希望您理解我…=)您仍然可以使用DOM操纵库处理用户输入。无论如何,从HTML到BBCode的无损转换是不可能的,因为后者不支持前者的所有功能。你甚至不能用正则表达式解析普通HTML。我可能会丢失任何标记,例如:颜色、hr、span(不是数据)等。我知道,我读过这篇文章。但是我有用户输入。用户将以正常格式输入程序html。我使用用户输入格式。我希望你能理解我……)您仍然可以使用DOM操纵库处理用户输入。在任何情况下,从HTML到BBCode的无损转换都是不可能的,因为后者不支持前者的所有功能。你甚至无法使用正则表达式解析普通HTML。我可能会丢失任何标记,例如:color、hr、span(非数据)等。哦,不),我有清晰的xhtml。一些标签:p,b,u,i,span,br,strong,h1-h6。。。这就是全部…)你所说的“清晰的xhtml”是什么意思?您仍然需要(好的,应该)对元素使用解析器,如
i have clear link:仅此而已。其他的我可以丢失如果它只是
,并且总是以那种精确的格式,那么你可以使用正则表达式。它将比DOM树方法更快。哦,不,我有清晰的xhtml。一些标签:p,b,u,i,span,br,strong,h1-h6。。。这就是全部…)你所说的“清晰的xhtml”是什么意思?您仍然需要(好的,应该)对元素使用解析器,如
i have clear link:仅此而已。其他的我可以丢失如果它只是
,并且总是以那种精确的格式,那么你可以使用正则表达式。它将比DOM树方法更快。