如何在PHP中删除URL的最后一部分

13
 $url = explode('/', $articleimage);
 $articleurl = array_pop($url);

我使用上述方法获取URL的最后一部分,方法有效。但我想从URL中删除最后一个部分并显示其余部分,请帮助我。下面是一个示例URL。

http://www.brightknowledge.org/knowledge-bank/media/studying-media/student-media/image_rhcol_thin     

所以执行 var_dump($url),你会发现已经得到了剩下的部分。 - Marc B
1
你需要再次使用 implode() 函数将数组合并为一个字符串。 - Santa's helper
dirname() - mario
11个回答

23

试试这个:

$url = explode('/', 'http://www.brightknowledge.org/knowledge-bank/media/studying-media/student-media/image_rhcol_thin');
array_pop($url);
echo implode('/', $url); 

如果我们可以给第三个参数“limit”爆炸就太完美了,但不幸的是,我们不能从右边开始给一个限制:/ (或者有人知道一个“诀窍”吗?) - cottton

10

不需要使用 explodeimplodearray_pop

只需使用 dirname($path)。它更加高效和代码更加简洁。


4
使用以下 PHP 中的字符串操作:
$url_without_last_part = substr($articleimage, 0, strrpos($articleimage, "/"));

2

针对Laravel

dirname(url()->current())

在url() -> current()中,您将获得当前URL。

在dirname中->您将获得父目录。

在Core PHP中:

dirname($currentURL)

1
在使用 array_pop 后,您可以执行以下操作。
$url2=implode("/",$url)

获取字符串中的URL


0

将此更改为:

$articleurl = array_pop($url);

转换为:

$articleurl = end($url);

$articleurl 将会保存最后一个数组键。

如果你错过了删除值的部分,你可以使用函数 key() 获取键,然后使用该键来删除值。

$array_key = key($articleurl);
unset(url[$array_key])

0
很简单的解决方案,在你的代码末尾添加即可。
$url = implode('/', $url);
echo $url;

请注意,array_pop使用引用参数传递,因此数组将被修改。implode()函数与explode函数相反,它通过第一个参数(glue)连接数组元素并返回字符串。

0

看起来这可能是你要找的东西。与其使用explode和implode,你可以使用专门处理这种URL操作的解析函数。

$url = parse_url( $url_string );

$result = 
    $url['scheme']
    . "://"
    . $url['host']
    . pathinfo($url['path'], PATHINFO_DIRNAME );

0

这是实现的简单方式

str_replace(basename($articleimage), '', $articleimage);

0

对于一行代码:

$url = implode('/', array_splice( explode('/', $articleimage), 0, -1 ) );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接