2012-11-22 36 views

回答

0

你想要的東西看起來是$_SERVER['REQUEST_URI']。或者你可以用parse_url()

或者如果你堅持使用正則表達式,[編輯]不要。

+0

只有當問題的網址是被訪問的網址... –

+0

是的好點。問題不是很清楚。刪除正則表達式答案後, –

+0

刪除了我的-1。感謝你鼓勵使用'parse_url()'。 –

7

你可以使用parse_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']:'')。 (!empty($ components ['fragment'])?'#'。$ components ['fragment']:'');'' – Kus

7

假設你有一個URL工作,不包含一個很長的字符串網址...

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

這不會給出假設的預期結果,如果url有查詢字符串和分段。 –

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/" 
更重要的是

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" 

注意,如果你只是希望剝離URL方案和主機關閉的URL,並且要保持查詢和片段,您可以使用此,如果你使用的PECL HTTP Extension,您可以使用http_build_url()方法: 「?」

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); 

什麼之前無所謂。將輸出

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 
) 

請參閱parse-url

指定PHP_URL_SCHEME,PHP_URL_HOST,PHP_URL_PORT,PHP_URL_USER,PHP_URL_PASS,PHP_URL_PATH,PHP_URL_QUERY或之一PHP_URL_FRAGMENT只檢索一個特定的URL組件(除非給出PHP_URL_PORT,在這種情況下返回值將會是一個整數)。

+0

謝謝米勒調整答案 – vnimbala

相關問題