将 Wiki 标记转换为 HTML 最简单的方法是什么?
题
我正在构建一个需要非常基本的标记功能的网站。我无法使用任何第 3 方插件,因此我只需要一种简单的方法将标记转换为 HTML。我总共可能允许使用 3 个标签。
最好的转换方式是什么 ==Heading==
到 <h2>Heading</h2>
, , 或者 --bold--
到 <b>bold</b>
?这可以简单地使用正则表达式来完成吗?或者有人有一个简单的功能吗?
我是用 C# 编写的,但其他语言的示例可能也可以。
跟进:这是我网站的一小部分,我喜欢使用简单的正则表达式替换的简单性。我用 C# 使用以下代码完成了这项工作:
string html = Regex.Replace("==This will be inside h2==", "==([^=]*)==", "< h2>$1< /h2>")
.NET 使用 $1 符号而不是 \1 其他语言中使用的表示法。
解决方案
这实际上并不是一个简单的问题,因为如果您要将内容显示给用户,您还需要清理输入以确保不会创建任何内容 跨站脚本 漏洞。
也就是说,您可能可以做一些非常简单的事情,正如您通过正则表达式替换最容易描述的那样。
例如
replace the pattern ==([^=]*)== with <h2>\1</h2>
其他提示
我使用 Markdown(与本网站使用的相同的轻量级标记语言)。对于 C#,有很多可用的源代码 这里. 。它完全支持 Markdown,尽管它似乎没有得到维护。但就目前而言,它运行得非常好,并且是免费开源的。
最好的部分是,如果您将此源代码包含在您的项目中,那么所有工作都会为您完成。它非常小;基本上是一个将文本块转换为 HTML 的方法调用。
这实际上取决于您使用的 Wiki 语法,因为有几种不同的语法。显然,wiki 软件在某处具有此功能;如果您找不到可以为您执行此操作的软件包,您可以开始在 wiki 软件中查找相关代码。
或许 这 就是你所需要的。
此页面是各种替代 MediaWiki 解析器的链接、描述和状态报告的汇编,即除 MediaWiki 本身之外的程序和项目,它们能够或旨在将 MediaWiki 的文本标记语法转换为其他内容。
对于你的 3 个标签来说可能有点大材小用,但如果它发展成一种成熟的标记语言,并且正则表达式开始看起来很可怕,那么你可能需要考虑 蚂蚁金服
正如 Joseph 所说,Markdown 是解决文本转 html 问题的最佳解决方案。
MarkdownSharp 是轻量级的、易于使用且经过良好测试的,因为它是 stackoverflow 实现!
new Markdown().Transform("**markdown text**");
http://blog.stackoverflow.com/2009/12/introducing-markdownsharp/
有关 Markdown 语法的更多信息 - http://en.wikipedia.org/wiki/Markdown