2012-11-22 24 views

答えて

0

$_SERVER['REQUEST_URI']が表示されます。またはあなたはそれを得ることができますparse_url()

あなたがregexの使用を主張する場合、[編集]しないでください。

+0

ご質問のURLが訪問されたURLの場合のみ... –

+0

良い点。問題はあまり明確ではなかった。正規表現の回答を削除した後に –

+0

がマイ-1を削除しました。 'parse_url()'の使用を奨励してくれてありがとう。 –

7

あなたはparse_urlを使用することができますが、その後、あなたは、さまざまなコンポーネントとURLの残りの部分を再構築する必要があります:あなたは含む長い文字列をURLで作業していないと仮定すると、

$components = parse_url($url); 
$result = $components['path'] . '?' . 
      $components['query'] . '#' . 
      $components['fragment']; 
+1

これは間違いなく最高の答えです。私が作った小さなアップデートです: '' '$ components = parse_url($ url); $ result = $ components ['path'] (!empty($ components ['query'])? '?'。$ components ['query']: '')。 ($ components ['fragment'])? '#'。$ components ['fragment']: ''); '' ' – Kus

7

をURL ...

$path = parse_url($url, PHP_URL_PATH); 
+3

URLにクエリ文字列とaがある場合、期待される結果は得られません。断片。 –

1

以下は、単にあなたのURLのパスを返します。

<?php 

$urls = array(
    'http://something.com/', 
    'http://something.something.com/', 
    'http://something.something.com/some/path', 
    'http://something.something.com/some/path/?query=string', 
    'http://something.something.com/some/path/?query=string#with-fragment', 
); 

foreach ($urls as $url) { 
    var_dump(parse_url($url, PHP_URL_PATH)); 
} 

#=> string(1) "/" 
#=> string(1) "/" 
#=> string(10) "/some/path" 
#=> string(11) "/some/path/" 
#=> string(11) "/some/path/" 

注意が、あなただけのURLスキームとURLオフホストを取り除くために探している、とあなたはにしたい場合はクエリとフラグメント保つ、あなたはこれを使用することができます。

foreach ($urls as $url) { 
    $url = parse_url($url); 
    $ret = $url['path']; 
    if ($url['query']) $ret .= "?{$url[query]}"; 
    if ($url['fragment']) $ret .= "#{$url[fragment]}"; 
    var_dump($ret); 
} 

#=> string(1) "/" 
#=> string(1) "/" 
#=> string(10) "/some/path" 
#=> string(24) "/some/path/?query=string" 
#=> string(38) "/some/path/?query=string#with-fragment" 

をいっそ"?"

foreach ($urls as $url) { 
    $url = http_build_url(array_key_intersect(
     parse_url($url), 
     array_flip(array('path', 'query', 'fragment')) 
    )); 
    var_dump($url); 
} 

#=> string(1) "/" 
#=> string(1) "/" 
#=> string(10) "/some/path" 
#=> string(24) "/some/path/?query=string" 
#=> string(38) "/some/path/?query=string#with-fragment" 
0
$url = "www.domain.com/sds?test=1&test2=2&test3=3"; 
$query = parse_url($url, PHP_URL_QUERY); 
parse_str($query, $query_array); 

は何前の問題ではありません:あなたはPECL HTTP Extensionを使用している場合、あなたはhttp_build_url()メソッドを使用することができます。出力は

array { 
'test' => string '1' (length=1) 
'test2' => string '2' (length=1) 
'test3' => string '3' (length=1) 
} 
0
$url = "http://php.net/manual/en/function.parse-url.php?arg=value#anchor"; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_PATH); 

上の例の出力になるでしょう:

Array 
(
    [scheme] => http 
    [host] => php.net 
    [path] => /manual/en/function.parse-url.php 
    [query] => arg=value 
    [fragment] => anchor 
) 

はPHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_PORT、PHP_URL_USER、PHP_URL_PASS、PHP_URL_PATH、PHP_URL_QUERYかのいずれかを指定しparse-url

を参照してください。特定のURLコンポーネントを文字列として取り出すPHP_URL_FRAGMENT(PHP_URL_PORTが指定されている場合を除きます。この場合、戻り値は整数である)。

+0

答えを調整するためのミラーをありがとう – vnimbala

関連する問題