2010-05-20 64 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']);