我做了一些搜索,并没有弄清楚为什么我的解决方案无效。基本上我需要一个字符串(这是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链接。我对新方法以及对上述代码的修改持开放态度。
答案 0 :(得分:0)
您可以使用正则表达式或HTML敏捷包来查找和混淆所有邮件。如果您想要一个好的混淆,请尝试阅读ten methods to obfuscate e-mail addresses compared
修改强> 对不起,从您的问题的第一个版本开始,我没有让您在使用正则表达式时遇到问题。既然你使用了一个WYSIWYG文本编辑器,我认为它出来的HTML应该是非常“常规”的,所以你可以使用正则表达式。 您可以尝试更改替换行:
string safeEmails = Regex.Replace(text, "href=\"mailto:.*\">(.*)</a>", "class=\"mailme\" href=\"$1\">$1</a>");