ASP.NET: Externe und interne Links unterscheiden

Saturday, November 24, 2007 1:02:04 AM (Mitteleuropäische Zeit, UTC+01:00)

In Foren fällt in letzter Zeit immer öfter die Kennzeichnung externer Links auf.
Zum Beispiel in dieser Form:

outgoingLink 
(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);
}

Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war,
bitte "kicken" sie ihn.

Kick it on dotnet-kicks.de