У меня есть путь как:
$path='somefolder/foo/bar/lastdir';
и я хочу удалить последнюю часть, поэтому у меня есть:
$path='somefolder/foo/bar';
Как будто я пошел в одну папку.
Я действительно новичок в php, возможно, это только одна функция, хотя я не могу найти ее нигде.
Вы можете попробовать это (проверено и работает как ожидалось):
$path = 'somefolder/foo/haha/lastone'; $parts = explode('/', $path); array_pop($parts); $newpath = implode('/', $parts);
$newpath
теперь будет содержать somefolder/foo/haha
.
Это не проверено, но попробуйте:
$path_array = explode('/',$path); array_pop($path_array); $path = implode('/',$path_array);
Если вы сейчас находитесь:
somefolder/foo/haha/lastone/somescript.php
и вы хотите получить доступ:
somefolder/foo/haha/someotherscript.php
просто введите:
../someotherscript.php
Вероятно, использование функции регулярного выражения было бы подходящим, если последняя часть будет изменяться. Пытаться
$pattern = '#/.*$#U'; $stripped_path = preg_replace($pattern, '', $original_path);
Это отключит все исходную строку пути, начиная с последней косой черты.
Вы можете использовать функцию, которая взрывает () переменную $ path в массив, а затем array_pop, чтобы избавиться от последнего элемента.
function path($path) { $arrayPath = explode("/", $path); $path = array_pop($arrayPath); return $path = implode("/", $path); }
использование:
dirname(dirname('somefolder/foo/haha/lastone/somescript.php'));
это должно возвратиться:
somefolder/foo/haha/
Самый короткий вариант в PHP:
$path = preg_replace('|/[^/]*$|','', $path);
который использует регулярное выражение.