0

我有这样的路径:

$path='somefolder/foo/bar/lastdir';

我想删除最后一部分,所以我有:

$path='somefolder/foo/bar';

就像我上一个文件夹一样。

我真的是 php 的新手,也许它只是一个功能,虽然我在任何地方都找不到它。

4

7 回答 7

5

你可以试试这个(测试并按预期工作):

$path = 'somefolder/foo/haha/lastone';
$parts = explode('/', $path);
array_pop($parts);
$newpath = implode('/', $parts);

$newpath现在将包含somefolder/foo/haha.

于 2012-07-23T18:35:55.960 回答
2

这是未经测试的,但请尝试:

$path_array = explode('/',$path);
array_pop($path_array);
$path = implode('/',$path_array);
于 2012-07-23T18:35:55.620 回答
2

采用 :

dirname(dirname('somefolder/foo/haha/lastone/somescript.php'));

这应该返回:

somefolder/foo/haha/
于 2012-07-23T18:41:37.023 回答
1

如果您目前在:

somefolder/foo/haha/lastone/somescript.php

你想访问:

somefolder/foo/haha/someotherscript.php

只需输入:

../someotherscript.php
于 2012-07-23T18:34:03.843 回答
1

如果最后一部分会发生变化,可能使用正则表达式函数是合适的。尝试

$pattern = '#/.*$#U';
$stripped_path = preg_replace($pattern, '', $original_path);

这将从最后一个正斜杠开始从原始路径字符串中删除所有内容。

于 2012-07-23T18:36:23.060 回答
1

您可以使用将 $path 变量exploded() 到数组中的函数,然后使用array_pop 删除最后一个元素。

function path($path) {
    $arrayPath = explode("/", $path);
    $path = array_pop($arrayPath);

    return $path = implode("/", $path);
}
于 2012-07-23T18:39:24.900 回答
1

PHP 中最短的变体是:

$path = preg_replace('|/[^/]*$|','', $path);

它使用正则表达式。

于 2012-07-23T18:44:03.323 回答