2010-05-20 35 views
4

所以,我有這樣的URL字符串中:如何提取PHP中的一部分URL以移除特定部分?

http://www.domain.com/something/interesting_part/?somevars&othervars 
在PHP

,我如何能夠擺脫所有,但interesting_part

+0

哦,我忘了引用網址,我很抱歉。感謝您糾正這一點,費利克斯。 – achairapart 2010-05-20 12:04:08

+0

如果有任何問題,您應在每個問題中標記正確答案。 – 2010-05-20 12:50:12

回答

5

...

$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars'; 
$parts = explode('/', $url); 
echo $parts[4]; 

輸出:

interesting_part 
+2

我只是寫這個,因爲你貼:D – 2010-05-20 11:59:07

+0

哦,聰明!我正在嘗試這個,非常感謝! – achairapart 2010-05-20 12:00:16

+0

@achairapart:不客氣:) – Sarfraz 2010-05-20 12:00:45

5

嘗試:

<?php 
$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars'; 

preg_match('`/([^/]+)/[^/]*$`', $url, $m); 
echo $m[1]; 
+2

我不知道爲什麼有人對此做了「-1」。它相當於爆炸的東西。我把它推回到0 :) – naugtur 2010-05-20 12:31:32

+1

人們看到正則表達式,他們刺他們的作者。 – erisco 2010-05-20 19:52:52

1

如果有趣的部分是永遠路徑的最後一部分:

echo basename(parse_url($url, PHP_URL_PATH)); 

[+]請注意,這隻能在沒有index.php?之前的任何其他文件名。這一個將適用於這兩種情況:

$path = parse_url($url, PHP_URL_PATH); 
echo ($path[strlen($path)-1] == '/') ? basename($path) : basename(dirname($path)); 
4

您應該使用parse_url做URL操作。首先解析它,然後做你想要的改變,例如使用爆炸,然後把它放回到一起。

$uri = "http://www.domain.com/something/interesting_part/?somevars&othervars"; 
$uri_parts = parse_url($uri); 

/* 
you should get: 
array(4) { 
    ["scheme"]=> 
    string(4) "http" 
    ["host"]=> 
    string(14) "www.domain.com" 
    ["path"]=> 
    string(28) "/something/interesting_part/" 
    ["query"]=> 
    string(18) "somevars&othervars" 
} 
*/ 

... 

// whatever regex or explode (regex seems to be a better idea now) 
// used on $uri_parts[ "path" ] 

... 

$new_uri = $uri_parts[ "scheme" ] + $uri_parts[ "host" ] ... + $new_path ... 
+0

是的,沒錯:首先是parse_url,然後按照@Sarfraz的建議展開路徑。感謝大家的幫助,非常感謝! – achairapart 2010-05-20 12:35:04

+0

編輯一些新的東西,爲更好的! – 2010-05-20 12:41:39

0

這裏是例如使用parse_url()覆蓋特定部分:

<?php 
$arr = parse_url("http://www.domain.com/something/remove_me/?foo&bar"); 
$arr['path'] = "/something/"; 
printf("%s://%s%s?%s", $arr['scheme'], $arr['host'], $arr['path'], $arr['query']);