Используйте Regex для замены HREF - PullRequest
1 голос
/ 03 июля 2010

У меня есть html электронная почта, по которой я хотел бы отслеживать активность кликов.Мне нужно обновить все hrefs в электронном письме, чтобы они указывали на мой сервер, где они могут быть зарегистрированы и перенаправлены.Есть ли простой способ сделать это глобально, используя регулярные выражения .Net?

<a href="http://abc.com">ABC</a>

становится

<a href="http://mydomain.com?uid=123&url=http:/abc.com>ABC</a>

Ответы [ 2 ]

2 голосов
/ 03 июля 2010

Не используйте RegEx для разбора HTML - это не обычный язык.См. здесь для некоторых убедительных демонстраций.

Используйте HTML Agility Pack для анализа HTML и замены URL-адресов.

0 голосов
/ 03 июля 2010

Попробуйте следующий код

public string ReplaceLinks(string emailSource) {
    string resultString = null;
    try {
        resultString = Regex.Replace(emailSource, "(<a href=\")(htt)", new MatchEvaluator(ComputeReplacement));
    } catch (ArgumentException ex) {
        // Syntax error in the regular expression
    }
    return resultString;
}

public String ComputeReplacement(Match m) {
    // You can vary the replacement text for each match on-the-fly
    return "$1http://mydomain.com?uid=123&url=$2";
}
...