我有一条路:
$path='somefolder/foo/bar/lastdir';
我想删除最后一部分,所以我有:
$path='somefolder/foo/bar';
就像我去了一个文件夹。
我是php的新手,也许它只是一个功能,虽然我无法在任何地方找到它。
答案 0 :(得分:3)
你可以尝试这个(测试并按预期工作):
$path = 'somefolder/foo/haha/lastone';
$parts = explode('/', $path);
array_pop($parts);
$newpath = implode('/', $parts);
$newpath
现在包含somefolder/foo/haha
。
答案 1 :(得分:2)
这是未经测试的,但请尝试:
$path_array = explode('/',$path);
array_pop($path_array);
$path = implode('/',$path_array);
答案 2 :(得分:2)
使用:
dirname(dirname('somefolder/foo/haha/lastone/somescript.php'));
这应该返回:
somefolder/foo/haha/
答案 3 :(得分:1)
如果您目前在:
somefolder/foo/haha/lastone/somescript.php
并且您想要访问:
somefolder/foo/haha/someotherscript.php
只需输入:
../someotherscript.php
答案 4 :(得分:1)
如果最后一部分会发生变化,可能使用正则表达式函数是合适的。尝试
$pattern = '#/.*$#U';
$stripped_path = preg_replace($pattern, '', $original_path);
这将从最后一个正斜杠开始删除原始路径字符串中的所有内容。
答案 5 :(得分:1)
你可以使用一个函数将$ path变量爆炸成一个数组,然后使用array_pop去掉最后一个元素。
function path($path) {
$arrayPath = explode("/", $path);
$path = array_pop($arrayPath);
return $path = implode("/", $path);
}
答案 6 :(得分:1)
PHP中最短的变体是:
$path = preg_replace('|/[^/]*$|','', $path);
使用正则表达式。