PHP - 从URL中删除最后一个目录

时间:2012-06-29 14:02:05

标签: php parsing url

让我说我的网址是:

  

http://www.example.com/news/media-centre/news/17/an-example-news-post/?foo=bar

我想在PHP中删除URL中的最后一个目录,所以我得到:

  

http://www.example.com/news/media-centre/news/17/?foo=bar

如何在确保维护任何其他网址参数的同时执行此操作?

我尝试过使用它:

$url = parse_url( $url );
$url['path'] = str_replace( strrchr($url['path'], "/"), "", $url['path'] );

但如果最后一个目录也在路径中的其他位置,则替换会导致问题。

更不用说将URL拼接在一起似乎是一个漫长的过程......

1 个答案:

答案 0 :(得分:1)

$url = "http://www.example.com/news/media-centre/news/17/an-example-news-post/?foo=bar";
$info = parse_url($url);
$info["path"]=dirname($info["path"]);

$new_url = $info["proto"]."://".$info["host"].$info["path"];
if(!empty($info["query"])) $new_url .= "?".$info["query"];
if(!empty($info["fragment"])) $new_url .= "#".$info["fragment"];