gpt4 book ai didi

c# - 使用 C# 自动超链接 URL 和电子邮件,同时保留定制标签

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:27 24 4
gpt4 key购买 nike

我有一个网站,允许用户向论坛发布消息。

目前,如果用户键入网址或电子邮件地址并发布,它会被视为与任何其他文本一样。

有一些工具可以让用户提供超链接的网站和电子邮件地址(通过一些定制的标签/标记)——这些工具有时会被使用,但并非总是如此。此外,定制的“图像”标签也可用于引用网络上托管的图像。

我的目标是既迎合那些使用这些现有工具生成超链接地址的人,又迎合那些只需输入网址或电子邮件地址,然后自动将其转换为超链接地址的人他们的地址(一旦他们提交了他们的帖子)。

我发现了一两个正则表达式可以转换纯字符串 Web 或电子邮件地址,但是,我显然不想对已经通过网站定制标记处理的地址执行任何操作,这就是我被困住了 - 如何排除已经通过定制标签满足的任何 Web 或电子邮件地址 - 我不想让它们保持原样。

以下是我需要单独放置的变体的一些定制标记示例:

[URL=www.msn.com]www.msn.com[/URL]

[URL=http://www.msn.com]http://www.msn.com[/URL]

[EMAIL=bob@smith.com]bob@smith.com[/EMAIL]

[IMG]www.msn.com/images/test.jpg[/IMG]

[IMG]http://www.msn.com/images/test.jpg[/IMG]

然而,理想情况下,以下示例需要分别自动转换为 Web 和电子邮件链接:

www.msn.com

http://www.msn.com

bob@smith.com

理想情况下,“转换后的”链接只会根据本文前面的初始示例应用适当的定制标签,而不是:

<a href="..." etc.

他们会变成:

[URL=http://www.. etc.)

不幸的是,我们有大量的历史数据存储在这个定制标签中,所以现在,我们想保留它而不是实现一种全新的方式来存储我们的用户帖子。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

这是我使用的方法。我现在无法访问完整的代码库,因此看不出它与论坛代码如何配合以停止双重链接,但请尝试一下,看看它是否适合您...

/// <summary>
/// Turns any literal URL references in a block of text into ANCHOR html elements.
/// </summary>
public static string ActivateLinksInText(string source)
{
source = " " + source + " ";
// easier to convert BR's to something more neutral for now.
source = Regex.Replace(source, "<br>|<br />|<br/>", "\n");
source = Regex.Replace(source, @"([\s])(www\..*?|http://.*?)([\s])", "$1<a href=\"$2\" target=\"_blank\">$2</a>$3");
source = Regex.Replace(source, @"href=""www\.", "href=\"http://www.");
//source = Regex.Replace(source, "\n", "<br />");
return source.Trim();
}

关于c# - 使用 C# 自动超链接 URL 和电子邮件,同时保留定制标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com