好的,这就是我要做的事情(实际上它很简单,但我决定发布以防我们提出更聪明的东西......) - )
这就是我的想法:
function getMainPart($url)
{
$parts = explode("/",$url);
return str_replace(end($parts),"",$url);
}
你有什么......聪明或更好的建议吗?有任何想法吗? (或者更通用/由PHP直接支持的任何东西?)
答案 0 :(得分:4)
您正在寻找parse_url:
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
/path
答案 1 :(得分:4)
你为什么不尝试这个:
$main_path = realpath(dirname(\__FILE__)) . "main_folder/";
答案 2 :(得分:2)
也许这个可以提供帮助:
echo 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
但这只适用于当前文件 - 不适用于所有随机网址;) 为此,你应该使用parse_url像Fluffeh说的那样..
答案 3 :(得分:2)
“正确”(虽然更长篇大论)的方式:
function getMainPart ($url) {
$parts = parse_url($url);
if (!isset($parts['scheme'])) {
return FALSE; // Not a valid, complete URL
}
$out = $parts['scheme'].'://';
if (!empty($parts['user'])) {
$out .= $parts['user'];
if (!empty($parts['pass'])) {
$out .= ':'.$parts['pass'];
}
$out .= '@';
}
$out .= $parts['host'];
if (!empty($parts['port'])) {
$out .= ':'.$parts['port'];
}
$out .= $parts['path'] == '/' ? '/' : dirname($parts['path']);
return $out;
}
答案 4 :(得分:1)
您需要parse_url()
功能。
$parts = parse_url($url);
echo $parts['scheme'] ."://". $parts['host'] . $parts['path'];
答案 5 :(得分:1)
如果你确定你的主要部分总是以/结尾,那么它会更短并且不涉及数组函数:
$url = 'http://www.somedomain.com/subfolder/yet-another-subfolder/final.php?param=2';
function getMainUrlPart($url) {
return substr($url, 0, strrpos($url, '/')+1);
}
echo getMainUrlPart($url);