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