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を検索して難読化できます。適切な難読化が必要な場合は、比較した電子メールアドレスを難読化するための10の方法を読んでみてください

編集: 申し訳ありませんが、あなたの質問の最初のバージョンから、正規表現を機能させるのに問題が発生することはありませんでした。あなたはWYSIWYGテキストエディタを使用しているので、そこから出力されるHTMLはかなり「通常」である必要があると思います。したがって、正規表現を使用しても問題ない場合があります。次のように置換行を変更してみてください。

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