69
function url(){
    if(isset($_SERVER['HTTPS'])){
        $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
    }
    else{
        $protocol = 'http';
    }
    return $protocol . "://" . $_SERVER['HTTP_HOST'];
}

たとえば、上記の関数では、同じディレクトリで作業すると問題なく動作しますが、サブディレクトリを作成してその中で作業すると、たとえばサブディレクトリの場所もわかります。欲しいだけですが、フォルダーで作業している場合はexample.comそれが得られます。メインディレクトリを使用している場合、機能は正常に動作します。に代わるものはありますか?example.com/subsub$_SERVER['HTTP_HOST']

または、関数/コードを修正してメインの URL のみを取得するにはどうすればよいですか? ありがとう。

4

13 に答える 13

109

を使用しSERVER_NAMEます。

echo $_SERVER['SERVER_NAME']; //Outputs www.example.com
于 2013-06-19T21:01:06.027 に答える
46

PHPのparse_url()関数を使用できます

function url($url) {
  $result = parse_url($url);
  return $result['scheme']."://".$result['host'];
}
于 2013-06-19T21:00:24.170 に答える
10

parse_url()次のように使用します。

function url(){
    if(isset($_SERVER['HTTPS'])){
        $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
    }
    else{
        $protocol = 'http';
    }
    return $protocol . "://" . parse_url($_SERVER['REQUEST_URI'], PHP_URL_HOST);
}

別の短いオプションを次に示します。

function url(){
    $pu = parse_url($_SERVER['REQUEST_URI']);
    return $pu["scheme"] . "://" . $pu["host"];
}
于 2013-06-19T21:01:32.110 に答える
1

このコードを使用するのは whork です:

if (!preg_match('#^http(s)?://#', $url)) {
         $url = 'http://' . $url;
}
$urlParts = parse_url($url);
$url = preg_replace('/^www\./', '', $urlParts['host']);
于 2021-01-11T00:02:26.433 に答える
0

これを試してください:

$uri = $_SERVER['REQUEST_URI']; // $uri == example.com/sub
$exploded_uri = explode('/', $uri); //$exploded_uri == array('example.com','sub')
$domain_name = $exploded_uri[1]; //$domain_name = 'example.com'

これがお役に立てば幸いです。

于 2016-07-14T14:49:41.010 に答える
-1

wordpress を使用している場合は、get_site_urlを使用します。

get_site_url()
于 2020-05-13T01:44:40.373 に答える