Zur Zeit kann ich die ‚Domain‘ Auszug aus einer URL mit dem folgenden regulären Ausdruck:JavaScript Regex URL Extrakt Domain nur
/^(?:https?:\/\/)?(?:[^@\n][email protected])?(?:www\.)?([^:\/\n\?\=]+)/im
Allerdings bin ich auch Sub-Domain ist immer zu dem ich vermeiden will. wenn ich zum Beispiel haben Plätze:
- www.google.com
- yahoo.com/something
- freds.meatmarket.co.uk?someparameter
- josh.meatmarket.co.uk/asldf/asdf
ich zur Zeit erhalten:
- google.com
- yahoo.com
- freds.meatmarket.co.uk
- josh.meatmarket.co.uk
Die letzten beiden möchte ich die freds
und josh
Subdomain Teil auszuschliessen und extrahieren nur die wahre Domäne, die nur meatmarket.co.uk
wäre.
Ich fand eine andere SOF, die versucht, in PHP zu lösen, leider kenne ich PHP nicht. ist das zu JS übersetzbar (ich verwende tatsächlich Google Script FYI)?
function topDomainFromURL($url) {
$url_parts = parse_url($url);
$domain_parts = explode('.', $url_parts['host']);
if (strlen(end($domain_parts)) == 2) {
// ccTLD here, get last three parts
$top_domain_parts = array_slice($domain_parts, -3);
} else {
$top_domain_parts = array_slice($domain_parts, -2);
}
$top_domain = implode('.', $top_domain_parts);
return $top_domain;
}
Das sieht so weit die beste Lösung zu sein. Ich denke, ich kann Mod, um schlechte Domains ausgeschlossen zu geben, wie "etwas/etwas/etwas" – MarkII
@MarkII, yeah, Sie können so ziemlich alle anderen Checks, die Sie wollen, darüber string. Ich habe auch '^' Anker hinzugefügt, den ich vor meiner Regexp vergessen habe. –
Dies funktioniert nicht für einige gültige URL-Parameter, z. "http: //freds.meatmarket.co.uk? someparameter? ordernummer = 1234 & email = break @ regex.com" die untergeordnete Gruppe ist "regex.com", weil sie auf einem @ – Davos