Помогите отрезать последний элемент массива

VANHALEN

Новичок
Задача вобщем такая.
PHP:
$path = (explode ('/',$_GET['page'])); // Разбиваем урл по частям 
$poslednii = end($path); // Находим последний элемент этого массива
Внимание вопрос.. Все элементы массива строковые. Нужно отрезать последнюю часть и Результат иметь в переменной. Кто подскажет как эт наиболее правильно сделать?

Тоесеть, из строки novosti/novosti-rossii/novosti-moskvy/novost1 нужно получить novosti/novosti-rossii/novosti-moskvy.

О! кстати и сообразил сразу, нужно будет ещё и назад строку собрать, но уже без последнего элемента. А может ещё проще вариант есть как получить эту строку без последнего элемента?
 

Redjik

Джедай-мастер
Я целую история придумал
PHP:
$authors = array('Фаулер','Гамма','Котеров','Попов');
array_pop($authors);
получается pop off Попов from the authors

ЗЫ. надо выспаться
 

VANHALEN

Новичок
PHP:
$path = (explode ('/',$_GET['page']));
array_pop($path);
$path = implode("/",$path); 
echo $path;
Всё, спасибо! работает..
 

radioheaded

PHP нуб
Разбивать строку, чтобы вытащить элемент и собрать обратно...

PHP:
$path = substr($_GET['page'], 0, strrpos($_GET['page'], '/'));
Но лучше
PHP:
$path = rtrim($_GET['page'], '/');
$path = substr($path, 0, strrpos($path, '/'));
Ибо на конце тоже может оказаться слэш.
 

VANHALEN

Новичок
И чего мне теперь выбрать из этого? Первый вариант уже поставил - работает..
 

VANHALEN

Новичок
Ок.. Если честно, я вообще не уверен что правильно хранить алиасы в таком виде. Ведь при таком подходе главная проблемма то не решена.. Если меняю корневой пункт меню, то дети то остаются не тронутными по крайней мере до их обновления. А с другой стороны может и хорошо. Продал рекламу на страницу, поменял родителя - реклама ведёт в никуда. Редиректы автоматом делать? Ух.. Геморой
 

WMix

герр M:)ller
Партнер клуба
все правильно делаешь путь удобнее хранить сразу, другое дело что немножко инфы не хватает (а именно вложеность и короткое имя)
 

VANHALEN

Новичок
WMix
Ну то что движок рекруссивно не спрашивает "найти мне алиас, к уоторого родитель алиас, а дедушка ещё алиас" это конечно положительно.. Ресурсоёмкость такого поиска (по готовому алиасу) конечно минимальна, но блин с другой стороны, на нормальном сайте не пальцем деланном какая может быть сложенность? Ну максимум 3, ну 4, иначе пользователь застрелится. А с прямыми алиасами нужно ещё придумать как это всё обновлять. Тоже трудоёмко, только уже для меня. А вся тема мне для чего нужна была.. Скрипт ищет в таблице блога все записи, у которых поле категория совпадает с алиасом. Но! Он выводит анонсы записей, а если вот нужно вывести подробности то совпадёт только один алиас (который с названием стати в конце). А в таблице с меню, откуда скрипт узнаёт какой модуль загружать, разумеется той части алиаса, в которой находится заголовок статьи, нет.. Там только категории. Вот чтобы он знал какой модуль загружать, я и отрезал часть строки.

Вобщем всё сделал, всё работает и всё зашибись, но геморой на этом только начинается :)
Короче как я не пишу свою CMS, всё как то больше джумлу напоминает, а ведт клиенты любили её именно за предельную простоту.. Приходится теперь изворачиваться, чтобы и просто было и функционально.
 

Вложения

ksnk

прохожий
VANHALEN
Обрати внимание, вот тут на форуме, у адреса в адресной строке есть еще и циферка - talk/threads/Помогите-отрезать-последний-элемент-массива.74618
При смене имени треда или его расположения циферка все равно будет вести именно сюда.

это одно из решений проблем с алиасами и поиском по ним.
 

VANHALEN

Новичок
ksnk
Да, я знаю, решений много, но раз уж начал делать чтобы было красиво, придётся держать марку, а то так бы вообще по id выводил бы новости. И код был бы в разы меньше и надёжнее. В форуме циферка то по-любому необходима.
И кстати сразу родился ещё один кусок кода, в связи с этим. Вероятность того, что внутри одной каегории меню совпадут алиасы, равна нулю (если человек не идиот). Могут совпасть окончания в разных категориях это да, но аласы всё равно будут разные (кастрюли/большие тарелки/большие), а вот веротяность того, что алиасы совпадут в таблице блога. или новостей в одной категории вполне себе есть, даже если у редактора фантазия не самая плохая. Что нибудь типа "предложения недели". Так что, ещё перед записью в базу проверять придётся и чё ни-будь добавлять, если совпадают. Тут либо отказаться от лишнего поиска (причём по 2 полям придётся искать, включая категорию) и сразу добавлять к алиасу дату, либо добавлять её только при совпадении. Первый вариант вроде не очень красивый, да и применяется в основном на новостных порталах.
При смене имени треда или его расположения циферка все равно будет вести именно сюда.
Тот же id только в профиль. Зачем тогда вообще алиасы городить? Поисковику то в принципе фиолетово алиас, или id, если контент достойный.
 

WMix

герр M:)ller
Партнер клуба
VANHALEN
задача такая, мы хотим уже по линку представить что за этим линком находится... да с одной стороны, индификатор лишний, делаем запрос where title="URL_PART" и это будет нашим ключиком, с другой стороны титлы могут поменяться, потому что сверху решили что просто "кастрюли" не заманивает покупателя, нужно написать, "био кастрюли с уменьшенным CO2 выхлопом"... при этом тк. мы ореентируемся на ID нам по барабану что написанно в линке, хоть "кастрюли из марсианского грунта"..

так что лучше не городи новую википедию, а сделай проще себе, и помоги маркетингу!
 

VANHALEN

Новичок
WMix
Так всё правильно говоришь. в чём собственно и проблемма, что лишние id в урл на всякеих там джумлах и вордпрессах не встречаются, поэтому заказчик и спросит, а что это за циферки некрасивые? Хотя наврал, в джумле точно встречаются, но их можно отключить. Но, тогда в джумле будет срабатывать то же самое ограничение на уникальность алиаса, о чём и предупреждается в настройках. Так что как ни крути, но если есть возможность обойтись без циферек, лучше это сделать. К тому же у меня из передаётся одна переменная с фиксированным именем (тоесть алиас) и после ? всё, что угодно. и я кстати это использую. Например для постраничного вывода и сортировки. novosti/moskva?str=3 Здесь это в принципе уместно.

с другой стороны титлы могут поменяться
Да да да.. Так вот и алиасы придётся автоматом менять при смене титла, иначе типа некрасиво. И искать уже по новым алиасам

Кстати, я сделал так уже, что если родителя переименовать, то ребёнок всё равно найдётся по старому алиасу, а если редактировать ребёнка, ну например новость внутри раздела, то при обновлении контента обновится и алиас полностью на новый. И его частью будет переименованный родитель. Только теперь нужно сделать так, чтобы не при обновлении алиас обновлялся, а после переименования родителя, обойти всех детей, внуков и родственников и обновить у них алиасы.

В до чего договорились блин.. Отредактиоровать ребёнка, отформатировать бабушку, удалить тёщу :)
 

WMix

герр M:)ller
Партнер клуба
все эти разговоры чистой воды философия... если все понимаешь, и сделал выбор, то решено!...
 
Сверху