私はすでにこの正確な主題に関する多くの質問を見てきましたが、私の問題を解決するものはないようです. ドメイン名を除いて、Web サイトのアドレスからすべてを削除する関数を作成したいと考えています。たとえば、ユーザーが入力した場合: http://www.stackoverflow.com/blahblahblah私はstackoverflowを取得したいです。ユーザーがfacebook.com/user/baconを入力した場合と同じように、私はfacebookを取得したいと思います。
文字列の特定の部分を削除できる関数または方法を知っている人はいますか? おそらく http を検索し、見つかった場合は // の後まですべてを削除し、次に www を検索し、見つかった場合は . まですべてを削除します。次に、次のドットまですべてを保持し、その後ろのすべてを削除しますか? 今見てみると、http: //www.en.wikipedia.org のようなサイトで問題が発生する可能性があります。
アイデアはありますか (PHP が望ましいですが、JavaScript も歓迎します)。
EDIT 1: 素晴らしいフィードバックのおかげで、私が望むことを行う機能を解決できたと思います:
function getdomain($url) {
$parts = parse_url($url);
if($parts['scheme'] != 'http') {
$url = 'http://'.$url;
}
$parts2 = parse_url($url);
$host = $parts2['host'];
$remove = explode('.', $host);
$result = $remove[0];
if($result == 'www') {
$result = $remove[1];
}
return $result;
}
少なくともサブドメインを考えると完璧ではありませんが、何とかできると思います。最後に 2 つ目の if ステートメントを追加して、配列の長さを確認してください。2 より大きい場合は、アイテム nr0 の代わりにアイテム nr1 を選択します。これは明らかに、.co.uk を使用するドメインに関連する問題を引き起こします (これは長いツリー アイテムになりますが、co を返したくないためです)。私はそれを少し回避しようとし、私が思いついたものを見ていきます. PHP の専門家の方にもご覧いただければ幸いです。私はあなたたちほど熟練も経験もありません... :P