有人能告诉我如何剥离出现在http://
and之间的任何东西/
吗?例如,http://something/
或者http://something.something.something/
它更改为 just /
?
问问题
10196 次
7 回答
12
假设您使用的是 URL 而不是包含url 的长字符串...
$path = parse_url($url, PHP_URL_PATH);
于 2012-11-22T01:09:43.450 回答
8
您可以使用parse_url
,但您必须使用不同的组件重新构建 URL 的其余部分:
$components = parse_url($url);
$result = $components['path'] . '?' .
$components['query'] . '#' .
$components['fragment'];
于 2012-11-22T01:09:18.940 回答
2
以下将简单地返回您的 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 Scheme 和 Host,并且想要保留Query 和 Fragment,则可以使用以下命令:
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"
更好的是,如果您使用的是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"
于 2012-11-22T01:31:06.460 回答
2
$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,在这种情况下,返回值将是一个整数)。
于 2014-03-18T20:37:10.037 回答
0
你想要的似乎是$_SERVER['REQUEST_URI']
. 或者你可以用parse_url()
或者,如果您坚持使用正则表达式,[EDIT] 不要。
于 2012-11-22T01:07:56.380 回答
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)
}
于 2013-02-02T23:21:12.850 回答
0
你可以从第一个得到它/
,//
不包括在内。
$url = "https://www.facebook.com/hhhhhh?2342";
$pos = strpos($url,"://");
$pos = false === $pos ? 0 : $pos + 3;
echo substr($url,strpos($url,'/',$pos));
于 2019-08-30T02:30:09.133 回答