Как удалить последний элемент из URL с помощью PHP?

1

У меня $url = "example.com/en/category/node/extra/"; и мне нужно удалить extra из $url, как я могу это сделать?

  • 1
    взорваться, array_pop и снова взорваться?
  • 0
    Извините, но мне не хватает контекста здесь. Вы можете переписать URL без дополнительного. Иначе я бы предложил немного htaccess здесь. В этом случае это дубликат stackoverflow.com/questions/10839047/…
Показать ещё 1 комментарий
Теги:
string

5 ответов

3
Лучший ответ

Разверните $ _SERVER ['SCRIPT_URL'] в массив, удалите пустые элементы и удалите последний элемент массива. Затем взорвите все это вместе с начальной и конечной косой чертой.

$urlArray = explode('/',$_SERVER['SCRIPT_URL']);
$urlArray = array_filter($urlArray); 

// remove last element
array_pop($urlArray);

$urlString = '/'.implode('/',$urlArray).'/';

Не храните array_pop() в качестве переменной, если вам не нужен последний элемент массива.

2

$url = "example.com/en/category/node/extra/"; echo basename($url); echo dirname($url);

возвращается
extra example.com/en/category/node

1

Много способов,

  1. взорвать поп последний, затем взорвать.

  2. Использовать регулярное выражение для замены последней части

  3. Я предпочитаю: append../сделать это как "example.com/en/category/node/extra/../", потому что это дешевле вычислений и его более эффективный

Если вы заинтересованы в одном из них и не знаете, как это сделать, оставьте мне комментарий.

1

Вы можете использовать функцию preg_replace.

preg_replace('~/[^/]*/([^/]*)$~', '//\1', $str);

DEMO

  • 0
    почему это [^ /] * не требуется. URL не будет содержать пробелов, помните. закончить здесь / [^ /] * / $
0

попробуйте это как ваше регулярное выражение

[^/]+/$ //to get last and replace it with empty

Ещё вопросы

Сообщество Overcoder
Наверх
Меню