2

私はPHPを使用しています。

このようなURLがあります

http://www.mydomain.com/mydir/mydir2/?something=hello

これ欲しい:

http://www.mydomain.com

私はこのようにしましたが、それを行う方法が間違っているように感じます

長くて醜い。

$url = 'http://www.mydomain.com/mydir/mydir2/?something=hello';
$root_url_a = explode('/', $url);
$root_url = $root_url_a[0] . '//' .  $root_url_a[2];
$root_url_clean = $root_url_a[2];

提案

  • 正規表現?
  • Xpath?
  • 私にとって未知のPHP関数ですか?

それを行うための最短で最も正しい方法が私の票を獲得します。

4

3 に答える 3

3

ここに例があります:

$url = parse_url('http://www.mydomain.com/mydir/mydir2/?something=hello');

echo $url->scheme.'://'.$url->host;

正しい線に沿っています。

技術的にはこれは正しくありませんが、スキームを送信するかどうかによって、URLparse_urlの割り当て方法が実際に変わる可能性があるため、次のように書きました。

function return_url($url){
    $parsed_url = parse_url($url);

    if(!$parsed_url){
        return false;
    }

    if(isset($parsed_url['scheme'])){
        if(!isset($parsed_url['host'])){
            return false;
        }else{
            return $parsed_url['scheme'].'://'.$parsed_url['host'];
        }
    }

    if(isset($parsed_url['path'])){
        return 'http://'.$parsed_url['path'];
    }
    return false;
}
于 2012-08-09T08:14:50.457 に答える
2

私は次のようにします:

$url = "http://www.mydomain.com/mydir/mydir2/?something=hello";
echo parse_url($url, PHP_URL_HOST);

// Would echo:
http://www.mydomain.com
于 2012-08-09T08:16:49.243 に答える
-4

私はRTMと言います;)

http://php.net/manual/en/function.parse-url.php

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_HOST);
?>
于 2012-08-09T08:11:47.570 に答える