2010-07-03 7 views
1

J'ai un email html que je voudrais suivre l'activité de clic. J'ai besoin de mettre à jour tous les hrefs dans l'email pour pointer vers mon serveur où ils peuvent être connectés et redirigés. Existe-t-il un moyen facile de le faire globalement en utilisant .Net regex?Utiliser Regex pour remplacer les HREF

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

devient

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

Les données sont de courrier électronique générées par une personne d'un champ de formulaire? Donc, vous voulez le changer après qu'ils publient les données sur le serveur? – spinon

Répondre

-1

Essayez le code suivant

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"; 
} 
+0

Avec une modification mineure, cela a très bien fonctionné. Merci. – Lauren

+0

Je ne comprends pas pourquoi la solution de @Oded n'est pas la solution acceptée, elle est non seulement plus claire mais plus logique –

2

Ne pas utiliser un RegEx pour analyser HTML - il n'est pas une langue régulière. Voir here pour quelques démonstrations convaincantes.

Utilisez le HTML Agility Pack pour analyser le code HTML et remplacer les URL.

Questions connexes