我正在构建一个需要非常基本的标记功能的网站。我不能使用任何第三方插件,所以我只需要一种简单的方法将标记转换为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 表示法。
答案 0 :(得分:6)
还有perl module和php project来执行此操作。这些源代码可能对开发自己的解决方案很有用。
答案 1 :(得分:4)
这不是一个简单的问题,因为如果您要向用户显示内容,您还需要清理输入以确保不会创建任何cross site scripting个漏洞。
也就是说,你可以做一些非常简单的事情,因为你最容易用正则表达式替换来描述。
例如
replace the pattern ==([^=]*)== with <h2>\1</h2>
答案 2 :(得分:1)
我使用Markdown(与此网站上使用的相同的轻量级标记语言)。对于C#,有一些非常好的源代码here。它完全支持Markdown,虽然它似乎没有得到维护。但目前它的效果非常好,它是免费的开源。
最好的部分是,如果您在项目中包含此源,那么所有工作都已完成。它非常小;基本上是一个方法调用将一大块文本转换为HTML。
答案 3 :(得分:1)
这实际上取决于您使用的Wiki语法,因为有几种不同的语法。显然wiki软件在某个地方有这个功能;如果找不到能够为您完成此任务的软件包,您可以开始在您的wiki软件中查找相关代码。
答案 4 :(得分:1)
也许this是你需要的。
此页面是各种替代MediaWiki解析器(即MediaWiki本身以外的程序和项目)的链接,描述和状态报告的汇编,它们能够或意图将MediaWiki的文本标记语法转换为其他内容。
答案 5 :(得分:0)
你的3个标签可能有点过分,但如果它成为一个完全成熟的标记语言,并且正则表达式开始变得可怕,那么你可能要考虑antlr
答案 6 :(得分:0)
正如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