问题 将Wiki标记转换为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 用于其他语言的符号。


10998
2017-09-05 15:04


起源

blog.codinghorror.com/parsing-html-the-cthulhu-way - QuentinUK


答案:


这不是一个简单的问题,因为如果您要将内容显示给用户,您还需要清理输入以确保不创建任何内容 跨站脚本 漏洞。

也就是说,您可以做一些非常简单的事情,因为您最容易用正则表达式替换来描述。

例如

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

4
2017-09-05 15:10





还有一个 perl模块 和a php项目 去做这个。这些源代码可能对开发自己的解决方案很有用。


6
2017-09-05 15:17





我使用Markdown(与此网站上使用的相同的轻量级标记语言)。对于C#,有很多可用的源代码 这里。它完全支持Markdown,虽然它似乎没有得到维护。但目前它的效果非常好,它是免费的开源软件。

最好的部分是,如果您在项目中包含此源,则所有工作都已完成。它非常小;基本上是单个方法调用将一大块文本转换为HTML。


1
2017-09-05 15:10



一个python等价物也存在: freewisdom.org/projects/python-markdown - SingleNegationElimination
2010-12-03:Markdown donet项目已搬迁至 code.google.com/p/markdownsharp - k3b


这实际上取决于您使用的Wiki语法,因为有几种不同的语法。 wiki软件显然在某个地方有这个功能;如果您找不到为您执行此操作的软件包,您可以开始在您的wiki软件中查找相关代码。


1
2017-09-05 15:12





你的3个标签可能有点过分,但如果它成为一个完全成熟的标记语言,并且正则表达式开始变得可怕,那么你可能要考虑 ANTLR


0
2017-09-05 15:14





正如约瑟夫所说,Markdown是解决html问题文本的最佳解决方案。

MarkdownSharp是轻量级的,易于使用且经过严格测试,因为它是stackoverflow实现!

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

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

有关Markdown语法的更多信息 - http://en.wikipedia.org/wiki/Markdown


0
2017-07-11 15:06





也许 这个 是你需要的。

此页面是各种替代MediaWiki解析器(即MediaWiki本身以外的程序和项目)的链接,描述和状态报告的汇编,它们能够或意图将MediaWiki的文本标记语法转换为其他内容。


0
2017-12-09 02:52