Соответствие URL Кодированный адрес электронной почты в C # - PullRequest
0 голосов
/ 25 марта 2011

Я немного искал и не совсем понял, почему мое решение не работает.По сути, мне нужно взять строку (то есть 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>

Некоторое предыстория: IЯ пытаюсь создать почтовую ссылку, чтобы избежать обнаружения харвестерами.Проблема в том, что я получаю строку с электронным письмом в виде стандартной ссылки mailto.Я не могу контролировать входящую строку, поэтому mailto всегда будет незащищенным mailto.Моя цель - найти их все, затемнить их, а затем использовать JavaScript, чтобы «исправить» ссылку, чтобы люди могли легко использовать ссылки mailto.Я открыт для новых подходов, а также изменений в приведенном выше коде.

1 Ответ

0 голосов
/ 25 марта 2011

Вы можете использовать регулярное выражение или пакет гибкости HTML, чтобы найти и скрыть всю вашу почту.Если вы хотите хорошее запутывание, попробуйте прочитать десять методов, чтобы запутать адреса электронной почты по сравнению

РЕДАКТИРОВАТЬ: извините, из первой версии вашего вопроса я не сделалПолучите, у вас была проблема с тем, чтобы заставить ваше регулярное выражение работать.Поскольку вы пользуетесь текстовым редактором WYSIWYG, я думаю, что HTML-код, который выходит из него, должен быть довольно «обычным», так что вы можете использовать регулярное выражение.Вы можете попробовать изменить строку замены следующим образом:

string safeEmails = Regex.Replace(text, "href=\"mailto:.*\">(.*)</a>", "class=\"mailme\" href=\"$1\">$1</a>");
...