Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: rtrim или параметр лимит функции explode

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: что практичнее?
lawer85
Отправлено: 25 Июля, 2015 - 23:26:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Всем привет.

Вот есть такая задача. Обработать адресную строку типа http://site[dot]ru/catalog/brand/3/page/2

brand и page в данном случае это не папки а параметры вместо записи ?brand=3&page=2

Дак вот получаю вот эту часть brand/3/page/2 и записываю в переменную. Теперь эту строку я преобразую в массив с помощью функции explode с разделителем /. Однако мне надо чтобы если в конце адресной строки стоит /, то чтобы это отсекалось. Как проще и практичнее написать у функции explode параметр limit = -1 или сделать такую запись explode("/", rtrim($str, "/"));
 
 Top
DelphinPRO
Отправлено: 25 Июля, 2015 - 23:57:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




так и написать
explode("/", rtrim($str, "/"));


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
lawer85
Отправлено: 26 Июля, 2015 - 01:55:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Хотелось бы услышать почему?
 
 Top
DelphinPRO
Отправлено: 26 Июля, 2015 - 02:28:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




потому что короче.
С отрицательным параметром вам нужно сначала проверить наличие слеша в конце. А так вы просто получаете нужные данные.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Deonis
Отправлено: 26 Июля, 2015 - 07:33:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Для таких задач предпочитают не explode, а preg_split
PHP:
скопировать код в буфер обмена
  1. $parts = preg_split('/\//', $str, -1, PREG_SPLIT_NO_EMPTY);

(Отредактировано автором: 26 Июля, 2015 - 07:34:10)

 
 Top
lawer85
Отправлено: 28 Июля, 2015 - 16:27:46
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




DelphinPRO пишет:
потому что короче.
С отрицательным параметром вам нужно сначала проверить наличие слеша в конце. А так вы просто получаете нужные данные.


Я так и не понял для чего проверять наличие слеша. Смотрите на данный момент при парметре -1: если слеш в конце есть, то в массив попадает пустая строка, если нету - элемент не создается.

(Отредактировано автором: 28 Июля, 2015 - 16:29:02)

 
 Top
DelphinPRO
Отправлено: 28 Июля, 2015 - 16:35:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




/one/two/ => ['one', 'two', ''] => explode с -1 => ['one', 'two']
/one/two => ['one', 'two'] => explode с -1 => ['one']

Dj втором случае явно не то что нужно?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
lawer85
Отправлено: 28 Июля, 2015 - 16:41:44
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




DelphinPRO пишет:
/one/two/ => ['one', 'two', ''] => explode с -1 => ['one', 'two']
/one/two => ['one', 'two'] => explode с -1 => ['one']

Dj втором случае явно не то что нужно?


Да спасибо, я перепроверил так и есть. Это я протупил.
 
 Top
Sail
Отправлено: 28 Июля, 2015 - 16:52:59
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Почему-бы не использовать
 
 Top
lawer85
Отправлено: 28 Июля, 2015 - 18:38:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Sail пишет:
Почему-бы не использовать


Да можно как вариант.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB