0

我做了一些搜索,并没有完全弄清楚为什么我的解决方案不起作用。基本上我需要一个字符串(它是 HTML 代码)解析它并查找 mailto 链接(然后我想将其替换为混淆的一部分)。到目前为止,这是我所拥有的:

    string text = "<p>Some Person<br /> Person's Position<br />p. 123-456-7890<br /> e. <a  title=\"Email Some Person\" target=\"_blank\" href=\"mailto:someperson%40domain.com\">someperson@domain.com</a></p>";
    text = Server.UrlDecode(text);
    string safeEmails = Regex.Replace(text, "(<a href=\"mailto:)(.*?)(%40)(.*?)(\">)(.*?)(</a>)", "<a class=\"mailme\" href=\"$2*$4\">$6</a>");
    Response.Write( Server.HtmlDecode(safeEmails));

文本来自 WYSIWYG 文本编辑器(熟悉的 Telrik RadEditor),出于所有意图和目的,我无权控制从中发出的内容。

基本上我需要找到并替换任何:

<a href="mailto:someone%40domain.com">someone@domain.com</a>

和:

<a class="mailme" href="someone@domain.com">someone@domain.com</a>

一些背景知识:我正在尝试创建一个 mailto 链接,以避免被收割机检测到。问题是我收到一个带有电子邮件的字符串作为标准的 mailto 链接。我无法控制传入的字符串,因此 mailto 将始终是未受保护的 mailto。我的目标是找到所有这些,混淆它们,然后使用 JavaScript 来“修复”链接,以便人类访问者可以轻松使用 mailto 链接。我对新方法以及对上述代码的修改持开放态度。

4

1 回答 1

0

您可以使用正则表达式或 HTML 敏捷包来查找和混淆您的所有 mailto。如果您想要一个好的混淆,请尝试阅读十种混淆电子邮件地址的方法比较

编辑: 对不起,从你的问题的第一个版本开始,我没有让你在使你的正则表达式工作时遇到问题。由于您使用的是 WYSIWYG 文本编辑器,因此我认为由此产生的 HTML 应该非常“常规”,因此您可以使用正则表达式。您可以尝试像这样更改替换行:

string safeEmails = Regex.Replace(text, "href=\"mailto:.*\">(.*)</a>", "class=\"mailme\" href=\"$1\">$1</a>");
于 2011-03-25T20:42:23.733 回答