- ベストアンサー
URLからドメイン名の抽出する
URLからドメイン名を抽出するよいライブラリはないでしょうか? (例) http://www.domain.co.jp/~username/dafult.htm ↓ domain.co.jp 正規表現で簡単に出来そうですが、 .jp .co.jp .co.uk .com.uk 等、一筋縄ではいかないようです。 どうかよろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Operaブラウザでは、 jpをDNSでひく ⇒ IPアドレスなし co.jpをDNSでひく ⇒ IPアドレスなし domain.co.jpをDNSでひく ⇒ IPアドレス有り みたいな方式で、ドメイン(domain.co.jp)を抽出しているようです。 IEやFirefoxでは、もっとテキトーな方法らしいです。ですので、 Set-Cookie: a=b; domain=com.uk のようなcookieをブラウザが食べてしまう問題があります(cookie monsterと呼ばれる問題)。 >一筋縄ではいかないようです。 その通りです。 Opera方式でも完全ではないようです。 恐らく現時点では、まともな方法やライブラリは存在しないのだと思います。 #役に立たない情報でスミマセン。単なる参考情報ということで。。。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
裏技1: 「.」は必ずドメイン名である (ルートドメインだから無意味だけど). 裏技2: DNS的にはドメイン名しかない (ホスト名もドメイン名の一種) とか聞いたことがあるので, ホスト名を返してしまう. まあ, いずれにしても「ドメイン名」が何を意味するのかがわからないとなんともならないんですが. ところで http://www.a.example.co.jp/test/ という URL に対して www.a.example.co.jp, a.example.co.jp, example.co.jp の 3つに対して IPアドレスがあり, その他にはない場合どれを「ドメイン名」にします?
お礼
今回は、あくまで http://www.value-domain.com/regdom.php のようなサイトで、取得可能なものをドメインとしています。 学術的な定義はあまり意味がありません。
補足
みなさん、ありがとうございます。 簡易的に辞書を用いて対応しようと思います。 ありがとうございました。
- venzou
- ベストアンサー率71% (311/435)
#1です。 質問をよく読んでいませんでした、ごめんなさい。(^^; ドメインの部分のみですね。それは確かに難しいですね。
お礼
はい。 そうなんです。 ありがとうございます。 みんなが必要としそうなので、 「必要なものはすでに発明されている」 という思想の元、情報を探しているのですが、 なかなかないのかもしれませんね。 ありがとうございます。
- moon_night
- ベストアンサー率32% (598/1831)
(@url) = split("\/",$url); print $url[2];
- venzou
- ベストアンサー率71% (311/435)
$url = 'http://www.domain.co.jp/~username/dafult.htm'; if($url =~ m|//(.+?)/|){ print $1; } これでどうでしょう。
お礼
ありがとうございます。 とても参考になりました。 やはりDNSを引くか、辞書を用意するしかないのですかね。 ありがとうございます。