2

URLから値を取得する必要があります
。URLがhttp://www.random.mysite.com/

それならどういうわけか取得したいですrandom

ただし、これを使用する場合wwwhttp://またはhttps://URLの前にある場合も同様に機能するはずです。

では、これはどのように行うことができますか?

私はこれを試しました: array_shift(explode(".",$_SERVER['HTTP_HOST']));

URLがである場合は機能しますが、前http://random.mysite.com/に置くと、代わりに返されますか?wwwwww

何か案は?

4

5 に答える 5

4

あなたが試すことができます

$url = 'http://random.mysite.com/';
$url = parse_url($url,PHP_URL_HOST);
$url = strstr(str_replace("www.","",$url), ".",true);
var_dump($url);
于 2012-10-21T14:16:04.483 に答える
3

http [s]://が前に付いていないURLはURLではありません。それらは文字列です。

$hostname = preg_replace('~^https?://(www\\.)?~i', null, $url); // shift scheme and www
$hostname = preg_replace('~#.*$~', null, $hostname); // pop target
$hostname = preg_replace('~\\?.*$~', null, $hostname); // pop query string
$hostname = preg_replace('~/.*$~', null, $hostname); // pop uri
// no guarantee it's a valid hostname, there's more checks you can do here

これを試してください。なぜ3つのステップ?明示的にすることで、それが何をするのかを理解し、/と?がない場合の複雑なケースに対応します。直接。順序も重要です。1回のストライキで組み合わせることができますが、正しく実行するにはテストが必要です...少しこすり取ると、不正な形式のURLがたくさんあります。

于 2012-10-21T11:59:08.713 に答える
2

You can use parse_url to get everything after the http:// and https:// first.

Then, use explode to split the domain in different elements. For the special case where it could start with www, check the value of the first item in the exploded array. If the first one is www, then the second one must be the subdomain.

$url = 'http://www.sub.yourwebsite.com';
$parsed = parse_url($url);
$domain = explode('.', $parsed['host']);
$subdomain = '';

if ($domain[0] == 'www')
    $subdomain = $domain[1];
else
    $subdomain = $domain[0];
于 2012-10-21T11:46:04.030 に答える
2

必要なものによっては、よりクリーンな解決策は、一貫性のあるURLを最初に提供することを確認することかもしれません。すべてのhttp://yoursite.comhttp://www.yoursite.comにリダイレクトするには、これを.htaccessファイル(apacheを使用している場合はルートディレクトリ)に配置します。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^your-site.com [NC]
RewriteRule ^(.*)$ http://www.your-site.com/$1 [L,R=301]

このコードのその他のバリエーションはこちら。これはSEOにも少し役立ちますが、一般的には良い習慣です。

于 2012-10-21T12:06:52.713 に答える
1

ドメインの最初の部分を選択してwwwであるかどうかを確認する代わりに、後ろから始めることもできます。ドメイン名を展開すると、最後の部分は「com」になり、その前の部分は「yoursite」になります。その前の部分は「ランダム」または「www」のいずれかです。「www」はそれ自体がサブドメインであり、「www.random」は「random」とは異なるサブドメインであるとさえ言えます。

欠点は、TLDが「.com」である可能性があることですが、「。co.uk」である可能性もあります。その場合、「yoursite」はサブドメインと見なされますが、実際にはそうではありません。

特に複数のサイトで使用できるフレームワークやライブラリでよく見られるのは、メインのホスト名(yoursite.com)を指定できる設定です。protocol://そうすれば、とそのホスト名の間のすべてがサブドメインであると簡単に結論付けることができます。

于 2012-10-21T12:05:05.797 に答える