800XE hat geschrieben:robo hat geschrieben:algorithmische Erkennung wäre mir lieber, aber das geht wohl nicht.
wie Michael schon sagte ... eigentlich gibts in england nur subdomains
Das war aber nur EIN Beispiel ... davon gibts noch mehr.
800XE hat geschrieben:Und eine algo erkennung wird nie 100%tig sein
Ich habe eine ...
800XE hat geschrieben:Aber mal mein Vorschlag
erstnal links das hatetepe://wewewe. abschneiden
Mache ich eh schon ...
800XE hat geschrieben:dann die Punte die noch da sind zählen
sind es 2 (oder auch mehr) ?
wie lang ist das STück rechts, inkl der 2 Punkte
z.B. mercedes.co.uk
= .co.uk = 6 Zeichen
oder
firma.de.com
= .de.com = 7 Zeichen
Ich würde mal sagen 8 Zeichen sind erlaubt, wenn es mehr ist, ist es eine echte Domain welche eine Subdomain hat
Funktioniert nicht.
hp.com ist 'ne echte Domain
managementsoftware.hp.com ist 'ne echte Subdomain
Aber so funktioniert es: Von links her beginnend einen Block nach dem anderen abschneiden und schauen, ob das, was übrigbleibt, noch per DNS auflösbar ist. Wenn nicht, hat man die "TLD". Nachteil: Ist saulangsam, gerade bei längeren Listen.
Code: Alles auswählen
sub domain {
my $res = shift;
$res =~ s/^(http:\/\/)?(www\.)?([^\/]+)(\/.*|)$/$3/;
my ($lastres, $ip);
while ($res =~ /\.[^\.]+\./) {
$lastres = $res;
$res =~ s/^[^\.]+\.(.*)$/$1/;
unless ($ip = &get_ip ($res)) {
$res = $lastres;
last;
}
}
return $res;
}
sub get_ip {
my ($name, $aliases, $addrtype, $length, @addrs) = gethostbyname (shift);
my ($a, $b, $c, $d);
my $result = '';
foreach my $addr (@addrs) {
($a, $b, $c, $d) = unpack ('C4', $addr);
$result .= ', ' if ($result);
$result .= "$a.$b.$c.$d";
}
return $result;
}
cu, Robo
