我正在构建一个需要非常基本的标记功能的网站。我不能使用任何第三方插件,所以我只需要一种简单的方法将标记转换为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 用于其他语言的符号。
这不是一个简单的问题,因为如果您要将内容显示给用户,您还需要清理输入以确保不创建任何内容 跨站脚本 漏洞。
也就是说,您可以做一些非常简单的事情,因为您最容易用正则表达式替换来描述。
例如
replace the pattern ==([^=]*)== with <h2>\1</h2>
还有一个 perl模块 和a php项目 去做这个。这些源代码可能对开发自己的解决方案很有用。
我使用Markdown(与此网站上使用的相同的轻量级标记语言)。对于C#,有很多可用的源代码 这里。它完全支持Markdown,虽然它似乎没有得到维护。但目前它的效果非常好,它是免费的开源软件。
最好的部分是,如果您在项目中包含此源,则所有工作都已完成。它非常小;基本上是单个方法调用将一大块文本转换为HTML。
这实际上取决于您使用的Wiki语法,因为有几种不同的语法。 wiki软件显然在某个地方有这个功能;如果您找不到为您执行此操作的软件包,您可以开始在您的wiki软件中查找相关代码。
你的3个标签可能有点过分,但如果它成为一个完全成熟的标记语言,并且正则表达式开始变得可怕,那么你可能要考虑 ANTLR
正如约瑟夫所说,Markdown是解决html问题文本的最佳解决方案。
MarkdownSharp是轻量级的,易于使用且经过严格测试,因为它是stackoverflow实现!
new Markdown().Transform("**markdown text**");
http://blog.stackoverflow.com/2009/12/introducing-markdownsharp/
有关Markdown语法的更多信息 - http://en.wikipedia.org/wiki/Markdown
也许 这个 是你需要的。
此页面是各种替代MediaWiki解析器(即MediaWiki本身以外的程序和项目)的链接,描述和状态报告的汇编,它们能够或意图将MediaWiki的文本标记语法转换为其他内容。