Používat Regex nahradit HREFs

hlasů
1

Mám html e-maily, které bych chtěl sledovat klikání. Musím aktualizovat všechny hrefs v e-mailu, přejděte zpět na můj server, kde mohou být přihlášeni a přesměrováni. Existuje jednoduchý způsob, jak to udělat po celém světě pomocí .Net regulární výraz?

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

stává

<a href=http://mydomain.com?uid=123&url=http:/abc.com>ABC</a>
Položena 03/07/2010 v 07:30
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Nepoužívejte RegEx analyzovat HTML - to není regulární jazyk. Viz zde pro některé přesvědčivé demonstrace.

Použít HTML Agility balíček analyzovat HTML a nahradit URL.

Odpovězeno 03/07/2010 v 07:47
zdroj uživatelem

hlasů
-1

Zkuste následující kód

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";
}
Odpovězeno 03/07/2010 v 08:05
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more