有人可以告诉我如何剥离http://
和/
之间出现的任何内容吗?例如,http://something/
或http://something.something.something/
因此它会更改为/
?
答案 0 :(得分:7)
您可以使用parse_url
,但之后您必须使用不同的组件重新构建其余的网址:
$components = parse_url($url);
$result = $components['path'] . '?' .
$components['query'] . '#' .
$components['fragment'];
答案 1 :(得分:7)
假设您正在使用网址而不是包含网址的长字符串 ...
$path = parse_url($url, PHP_URL_PATH);
答案 2 :(得分:2)
以下内容只会返回您网址的路径:
<?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"
更好的是,如果您使用的是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"
答案 3 :(得分:0)
您想要的是$_SERVER['REQUEST_URI']
。或者你可以通过parse_url()
或者如果你坚持使用正则表达式,[编辑]不要。
答案 4 :(得分: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)
}
答案 5 :(得分: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,否则返回值将为整数)。
答案 6 :(得分:0)
您可以从第一个/
(不包括//
)中获取它。
$url = "https://www.facebook.com/hhhhhh?2342";
$pos = strpos($url,"://");
$pos = false === $pos ? 0 : $pos + 3;
echo substr($url,strpos($url,'/',$pos));