Witam buduję coś takiego webspider w C#. W moich badaniach natknąłem się na problem, który muszę określić, czy łącze jest wewnętrzne czy zewnętrzne, przychodzące lub wychodzące. Musiałem więc stworzyć funkcję, która wykonałaby dla mnie pracę. Więc wymyśliłem następującą funkcję, ale nie jestem pewien, czy jest to najlepszy możliwy algorytm do wykonania tego zadania. Chciałbym więc państwa opinie na temat tego problemu.Sprawdź, czy łącze jest wewnętrzne lub zewnętrzne
Zakładam, że linki bez http: // lub https: // przed linkiem są wewnętrzne , a jeśli mam domenę http://www.blahblah.com, to test taki jak link powinien nadal być wewnętrzny pomimo faktu, że ma on http : // z przodu, ale link taki jak http://www.somethingelse.com/?var1=http://www.blahblah.com/test jest zewnętrzny. Sprawdzam tylko pierwsze litery.
private Boolean checklinkifinternal(String link)
{
Boolean isinternal = false;
if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0)
{
//Then probably external
if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0)
{
isinternal = true;
}
}
else
{
isinternal = true;
}
return isinternal;
}
Jak określić, czy jest to zewnętrzne/wewnętrzne przez protokół, z którego korzysta ...? – Shai
Co powiecie na http://127.0.0.1 lub http://192.168.1.1 oba są wewnętrzne, ale przeszedłby jako zewnętrzny – Lloyd
Rzeczywiście nie pomyślał o tym Lloyd – themis