将自定义标记替换为<a href=""> tags</a>

时间:2013-05-13 08:46:19

标签: regex vb.net asp.net-4.5

在我的ASP.NET应用程序中,我有一个纯文本字段。我想允许用户以下列格式输入URL:

[url="http://www.google.com"]Google[/url]

这些将在输入时直接保存到数据库中。但是,在检索时,我想将上述内容转换为以下HTML格式,以使其在屏幕上显示:

<a href="http://www.google.com">Google</a>

这种方法的原因是为了避免篡改内置的ASP.NET验证例程,当它在表单输入字符串中看到<a时会触发错误。

我在StackOverflow上看过其他示例,其中RegEx用于解析字符串,但是,我找不到任何可以在单个字符串中多次出现[url...]的情况下可以遵循的内容。

任何人都可以请我提供一个如何解析这样一个字符串的例子,比如说......

  

尝试这个时髦的新搜索引擎:   [url =“http://www.google.com”] Google [/ url]或者这个旧版本   当天:[url =“http://uk.altavista.com”] AltaVista [/ url]

...将每个事件转换为所需的格式? RegEx不是我的遗憾。

感谢。

2 个答案:

答案 0 :(得分:1)

根据HamZa DzCyber​​DeV的评论,我在RegexHero中使用了RegEx模式,发现RegExHero甚至生成了ASP.NET。因此,下面的简单代码完全达到了我需要的结果:

Dim s As String = txt_input.Text.Trim
Dim strRegex As String = "\[url\s?=\s?""?(.*?)""?\](.*?)\[\/url\]"
Dim myRegex As New Regex(strRegex)
Dim strReplace As String = "<a href=""$1"">$2</a>"
ltl_output.Text = myRegex.Replace(s, strReplace)

答案 1 :(得分:0)

据我所知,您需要一个用于ASP.NET的BBCode转换器,您可以找到here

来自给定链接的示例:

string BBCodeSyntax = "[url={webaddress}]{display}[/url]"; 
string HtmlSyntax = "<a href=\"{webaddress}\">{display}</a>"; 
string Fields = "{webaddress};{display}"; 

string input = "For those who code - [url=http://www.codeproject.com]The CodeProject[/url]. This website contains lots of articles about programming. For open source project hosting from Microsoft, you may have a look at [url=http://www.codeplex.com]Codeplex.com[/url]."; 

string output = BBCode.ConvertToHtml(input, BBCodeSyntax, HtmlSyntax, Fields); 
return output;