所以,我有这样的URL字符串中:如何提取PHP中的一部分URL以移除特定部分?
http://www.domain.com/something/interesting_part/?somevars&othervars
在PHP
,我如何能够摆脱所有,但interesting_part
?
所以,我有这样的URL字符串中:如何提取PHP中的一部分URL以移除特定部分?
http://www.domain.com/something/interesting_part/?somevars&othervars
在PHP
,我如何能够摆脱所有,但interesting_part
?
...
$url = 'http://www.domain.com/something/interesting_part/?somevars&othervars';
$parts = explode('/', $url);
echo $parts[4];
输出:
interesting_part
我只是写这个,因为你贴:D – 2010-05-20 11:59:07
哦,聪明!我正在尝试这个,非常感谢! – achairapart 2010-05-20 12:00:16
@achairapart:不客气:) – Sarfraz 2010-05-20 12:00:45
如果有趣的部分是永远路径的最后一部分:
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));
您应该使用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 ...
是的,没错:首先是parse_url,然后按照@Sarfraz的建议展开路径。感谢大家的帮助,非常感谢! – achairapart 2010-05-20 12:35:04
编辑一些新的东西,为更好的! – 2010-05-20 12:41:39
这里是例如使用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']);
哦,我忘了引用网址,我很抱歉。感谢您纠正这一点,费利克斯。 – achairapart 2010-05-20 12:04:08
如果有任何问题,您应在每个问题中标记正确答案。 – 2010-05-20 12:50:12