1

次のような文字列形式の URL があります。

str="http://code.google.com"

and some other like str="http://sub.google.co.in"      

最初の文字列から google.com を抽出し、2 番目の文字列から google.co.in を抽出します。

私がしたことは:

var a, d, i, ind, j, till, total;

a = document.createElement('a');

a.href = "http://www.wv.sdf.sdf.sd.ds..google.co.in";

d = "";

if (a.host.substr(0, 4) === "www.") {
  d = a.host.replace("www.", "");
} else {
  d = a.host;
}

till = d.indexOf(".com");

total = 0;

for (i in d) {
  if (i === till) {
    break;
  }
  if (d[i] === ".") {
    total++;
  }
}

j = 1;

while (j < total) {
  ind = d.indexOf(".");
  d = d.substr(ind + 1, d.length);
  j++;
}

alert(d);

私のコードは機能しますが、「.com」でのみ機能します。「.co.in」、「co.uk」などの他のものでは、手動で指定するまで機能しません。誰かがこれの解決策を教えてくれますか? コード全体を変更する必要があってもかまいませんが、動作するはずです。ありがとう

4

2 に答える 2

2

現時点での唯一の実用的な解決策は (それでも 100% は機能しません) 、コード内でPublic Suffix Listを参照し、必要に応じてそのリストと同期することです。

ドメイン名を見て、どの部分が「登録済みドメイン名」で、どの部分がサブドメインかを判断できるアルゴリズムはありません。DNS 自体に問い合わせても実行できません。

于 2012-05-16T08:50:01.747 に答える