【问题标题】:Replace custom tags with <a href> tags用 <a href> 标签替换自定义标签
【发布时间】:2013-05-13 08:46:19
【问题描述】:

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

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

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

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

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

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

谁能给我一个如何解析这样一个字符串的例子,比如说...

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

...将每个匹配项转换为所需的格式?遗憾的是,RegEx 并不是我的强项。

谢谢。

【问题讨论】:

  • 我回答了几乎类似的问题in the regex chat room,但在 PHP 中。如果在 ASP 中有类似的功能,您可以将 size 替换为 url 和输出......另外我认为有一个错字&lt;a href="http://www.google.com"&gt;Google&lt;/url&gt; 我想你的意思是&lt;a href="http://www.google.com"&gt;Google&lt;/a&gt;
  • 我不熟悉VB.net或ASP,这是online tester的截图,你可以加入我们the regex room
  • 大声笑,它对你有帮助,让我更有动力帮助这里的人 :D 啊,自从我删除了正则表达式,我已经厌倦了把它作为答案,你可以把它作为答案并自己接受!快乐的编码和 +1 的努力:)
  • 邪恶的。只需将新逻辑应用到我的实际项目中 - 对这个结果非常满意。继续努力:-)
  • 是的,当然,这里有一个demo,你也可以看看那些答案here,因为我看到你使用的几乎与那个相同的模式问了这个问题。

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


【解决方案1】:

按照 HamZa DzCyber​​DeV 的 cmets,我在 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)

【讨论】:

    【解决方案2】:

    据我了解,您需要一个用于 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; 
    

    【讨论】:

    • 嗨。我很欣赏这一点,并且还看到了 Jeff Atwood 的 markdown NuGet 包,它模仿了 StackOverflow 的编辑器。但是,每个都有自己的问题(BBCode 使用不好的 iFrame),所以我希望尽可能使用本机 ASP.NET 功能来做到这一点,例如正则表达式
    • 在 BBCodeSyntax 中,您提供自定义 BBCode 的语法,在 HTMLSytax 中,您提供自定义 HTML 语法,您可以在其中编写 iframe,但在给定示例中,html 语法是仅带有 href 属性和的简单链接要显示的文本。
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2013-01-11
    • 2021-03-03
    • 1970-01-01
    • 2013-06-24
    • 2020-11-22
    • 1970-01-01
    相关资源
    最近更新 更多