現在、次の正規表現を使用して任意のURLから「ドメイン」を抽出できます。
/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n\?\=]+)/im
ただし、回避したいサブドメインも取得しています。たとえば、サイトがある場合:
私は現在取得します:
最後の2つはfreds
、josh
サブドメインの部分を除外し、真のドメインのみを抽出したいと思いますmeatmarket.co.uk
。
PHPで解決しようとする別のSOFを見つけましたが、残念ながらPHPを知りません。これはJSに翻訳できますか(私は実際に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;
}
したがって、すでに2つの部分しかない場合を除いて、結果から最初のホスト名を削除する必要がありますか?
その条件に一致する正規表現を使用して、最初の一致からの結果を後処理するだけです。
function domain_from_url(url) {
var result
var match
if (match = url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n\?\=]+)/im)) {
result = match[1]
if (match = result.match(/^[^\.]+\.(.+\..+)$/)) {
result = match[1]
}
}
return result
}
console.log(domain_from_url("www.google.com"))
console.log(domain_from_url("yahoo.com/something"))
console.log(domain_from_url("freds.meatmarket.co.uk?someparameter"))
console.log(domain_from_url("josh.meatmarket.co.uk/asldf/asdf"))
// google.com
// yahoo.com
// meatmarket.co.uk
// meatmarket.co.uk
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加