In Foren fällt in letzter Zeit immer öfter die Kennzeichnung externer Links auf.Zum Beispiel in dieser Form: (Screenshot von aspnetzone.de)Wie kann in ASP.NET ermittelt werden, ob der Link auf eine interne oder externe URL zeigt?Für diese Unterscheidung reicht ein Einzeiler:
/// <summary> /// Determines whether the link is outgoing /// </summary> /// <returns> /// <c>true</c> if [is outgoing link]; otherwise, <c>false</c>. /// </returns> private bool IsOutgoingLink(string url) { return new Uri(Request.Url.AbsoluteUri).Host != new Uri(url).Host; }
Die zweite Frage ist, wie kann in einem Text eine URL erkannt werden? Hier helfen Reguläre Ausdrücke weiter. Die folgende Funktion gibt true zurück wenn eine gültige URL übergeben wurde.
/// <summary> /// Determines whether the specified candidate is a URL. /// </summary> /// <param name="candidate">The candidate.</param> /// <returns> /// <c>true</c> if the specified candidate is URL; otherwise, <c>false</c>. /// </returns> private bool IsURL(string candidate) { Regex regex = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"); return regex.IsMatch(candidate); }