Intereting Posts

Удаление части пути в php

У меня есть путь как:

$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); 

который использует регулярное выражение.