2012-08-23 52 views
-1

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

我想:

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

不工作好。

+1

实际上,基本URL是'http:// test.com /'。无论如何,[你有什么尝试](http://www.whathaveyoutried.com)? – Matt

+0

你想从最后/字符去掉? SUBSTR? – mlemay

+0

我试过这段代码,但它似乎没有正确工作。 preg_match('〜。* /〜',$ cur_url,$ match); $ base =($ match [0] =='http://')? $ cur_url:$ match; @Matt,不,基地址是带有路径的网址,但文件,查询和片段已被删除。 – barakuda28

回答

0

使用一个正则表达式字符串,它保留.com转发的所有内容。只需设置它就可以使用任何可能的网站结尾。将很快用样本字符串更新。

- 编辑 -

这个PHP正则表达式的字符串工作从任何网址,以获取基址(IVE测试)。

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

注:此字符串设定为只与.COM,.CA和.gov领域的工作,但你可以在括号他们分开添加其他|。

- 编辑 -

重读你的帖子,我已经设计了另一个字符串,如果你想在URL一切,除了在最后的文件。

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

注:如果您使用与不具有对最终文件的URL,该目录必须有斜杠静止或最后的目录将被削减为好。

2

尝试parse_url

从php.net样品

<?php $url = 'http://username:[email protected]/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 
+0

PATH也保存文件在最后。我必须被删除。另外我需要生成一个基础url,而不仅仅是路径。 – barakuda28

+0

这是重新组装基本URL的很多工作。问题看起来像OP想修剪'it.html',并保留资源定位器的基础“路径”。 – mario

+0

@mario据我所知,他要求返回'http:// test.com/folder /' –

0

那么,如果你想从URL

?hello=somethin&something=somethingelse

删除$ _GET瓦尔10

的以下可能的工作:

$fullurl = $_SERVER['REQUEST_URI']; 
$urlarray = explode($fullurl, "?"); 
$urlnoget = $urlarray[0]; 

是会爆炸的URL到每一个位?没有?在一个实际的文件/ fooledr名称,所以它会清除$ _GET的网址。

您是否考虑过使用JavaScript?

对不起,如果有更简单的方法,但这是我所知道的。

+0

'explode()'是一个过度使用的解决方法。使用'strtok()'。 – mario

+0

我从来没有听说过这样的功能,以及我在这里相当新。 PS:如果我的帖子有用,请+1 – user115422