![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| ramen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 10.6.2008 Репутация: нет Всего: нет |
Есть ссылка к примеру http://test1.ru/folder/file.rar Папка и имя файла могут иметь разные имена и расширение.
Как узнать имя фолдер? |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Варианты: explode, parse_url, mreg_match
|
|||
|
||||
| ramen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 10.6.2008 Репутация: нет Всего: нет |
Как записать это?
|
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
да так:
http://php.ru/manual/function.explode.html http://php.ru/manual/function.parse-url.html всё зависит, что вам надо. если я правильно понял, и вам нужен путь , то его лучше определить:
если нужна именно папка, в которой файл, то всё равно придётся эксплодом:
|
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 1 Всего: 32 |
набрать в браузере адрес http://php.net
там вверху справа будет окошко поиска последовательно ввести в окошко названия предложенных функций и прочитать их описание в документации. там будут примеры. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 1 Всего: 50 |
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
amg, ну я конечно понимаю, что решения разные бывают, но когда есть в 20 раз проще, зачем реглярки использовать, причем регулярка колоссально не оптимальная...
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 1 Всего: 50 |
||||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Я имел ввиду не саму регулярку, а вообще использование регулярных выражений в данном случае. Более оптимальный вариант я изложил выше. Что касается самой оптимальной регулярки, точнее функциональной, то см тут: http://forum.vingrad.ru/forum/topic-75770.html |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 1 Всего: 4 |
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 1 Всего: 50 |
Уважаемый Mal Hack! Просмотрел я наконец то указанная Вами ссылку, но, к сожалению, не не увидел там способов существенно оптимизировать обсуждаемую здесь регулярку (вообще, в топике про урлы, на который можно попасть по этой ссылке, обсуждалась задача нахождения урла в строке, здесь же, насколько я понял, задача иная - пропарсить строку, заведомо содержащую урл, т.е. проверка на валидность не нужна). Единственное, что пришло мне в голову в плане оптимизации - это преобразование первоначальной регулярки к виду '|^http://([^/]+)/?(.*/)?(.*)$|' Сделанная здесь замена последних захватывающих скобок (поле File), очевидно, чуть-чуть повысит эффективность регулярки. Замена в скобках, захватывающих поле Folder, возможно, тоже, но только если имя файла не очень длинное и откатов будет немного - тут надо проверять на реальных примерах. Замечу еще, что замена ((?:[^/]+/)*) на (.*/)? несколько ограничивает функциональность: если в первом случае заложена возможность получения для вложенных папок каждой папки в отдельности, то во втором - нет. Блин, получается, спорю сам с собой PS Поймите меня правильно, я согласен с тем, что применение регулярных выражений в данном случае - не самое правильное, но меня очень заинтересовала отмеченная Вами возможность резкого увеличения оптимальности регулярки, т.к. с регулярными выражениями приходится иметь дело часто и, как правило, необходима их максимальная эффективность. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
amg,
другим языком, использовать для решения данной задач PCRE не оптимально. оптимальный функционал == что регулярка делает (минимум пролетов мимо), а не на сколько она оптимальна, с точки зрения быстродействия. Извините, несколько не коректно выразился первоначально. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 1 Всего: 50 |
Mal Hack, понятно. Благодарю за разъяснение!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |