Php 将给定URL转换为基本URL

Php 将给定URL转换为基本URL,php,url,base,Php,Url,Base,如何将给定url转换为基本url? 这意味着如果我有“http://test.com/folder/it.html?gsa=5,脚本应返回http://test.com/folder/“ 我试过: preg_match('~.*/~', $cur_url, $match); $base=($match[0]=='http://') ? $cur_url : $match; 不太好用。使用一个正则表达式字符串,它可以将.com中的所有内容向前移动。只需设置它,就可以使用任何可能的站点结尾。将很快

如何将给定url转换为基本url? 这意味着如果我有“http://test.com/folder/it.html?gsa=5,脚本应返回http://test.com/folder/“

我试过:

preg_match('~.*/~', $cur_url, $match);
$base=($match[0]=='http://') ? $cur_url : $match;

不太好用。

使用一个正则表达式字符串,它可以将.com中的所有内容向前移动。只需设置它,就可以使用任何可能的站点结尾。将很快使用示例字符串进行更新

--编辑--

这个php正则表达式字符串用于从任何url(我测试过)获取基址

注意:此字符串设置为仅适用于.com、.ca和.gov域,但您可以在括号中添加其他域,并用|分隔

--编辑--

重新阅读你的文章,我设计了另一个字符串,如果你想要url中的所有内容,除了结尾的文件

!([a-zA-Z]*+(.com/|.ca/|.gov/))+([a-zA-Z/]*[/])!

注意:如果您将其用于结尾没有文件的url,则目录必须保留斜杠,否则最后一个目录也将被剪切。

尝试
解析url

来自php.net的示例

<?php $url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH); ?>

如果您想从url中删除$\u GET vars

?hello=somethin&somethin=somethingelse

以下方法可能有效:

$fullurl = $_SERVER['REQUEST_URI'];
$urlarray = explode($fullurl, "?");
$urlnoget = $urlarray[0];
这会将url分解为每一个字节?没有吗?在实际的文件/傻瓜名称中,这样它将清除$\u GET URL

你考虑过使用JavaScript吗


抱歉,如果有更简单的方法,但这是我所知道的。

实际上,基本URL应该是
http://test.com/
。不管怎样,是否要从最后一个/字符中删除?substr?我试过这个代码,但似乎不正常。预匹配(“~.*/~”,$cur\u url,$match)$base=($match[0]='http://')$cur_url:$match@Matt,不,基本url是带有路径的url,但文件、查询和片段已删除。@user1568625我认为您不理解基本url的含义。不可靠的简单方法是
dirname()
。仅在URL参数不包含斜杠的情况下有效,并剥离“目录”
/
。路径还将文件保留在末尾。我必须被移除。我还需要生成一个基本url,而不仅仅是路径。重新组装基本url需要大量的工作。这个问题看起来OP只想修剪
it.html
并保留资源定位器的基本“路径”。但是
[path]
将需要进一步的字符串修补。您的
parse\u url
示例将返回
/folder/it.html
我从未听说过这样的函数,我在这里还是个新手。PS:+1如果我的帖子有用的话
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path
$fullurl = $_SERVER['REQUEST_URI'];
$urlarray = explode($fullurl, "?");
$urlnoget = $urlarray[0];