Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Получение имени файла из URL


Автор: suxxor 26.12.2011, 00:12
Как корректно получить имя файла из URL?

1) из самой ссылки (если она имеет вид к примеру http://www.host.com/path/filename.ext или /path/filename.ext?param1=1&param2=2 )
2) можно извлечь его из параметра Content-Disposition заголовка, но он не всегда присутствует
3) из заголовка Location повторяем вариант №1

Нужно извлечь все описаные параметры с использованием regex (я использую TR1)

К первому варианту я примернго написал регулярку:
Код

^.*/|[\?&;=\^%@#!/;'<>].*$


к остальным нужна помощь

Автор: bsa 26.12.2011, 11:51
а варианты типа http://forum.vingrad.ru/forum/s/d8986f426ce327862eaa1cda9ba06c0a/forum/topic-189260/kw-%25D0%25BF%25D1%2580%25D0%25B5%25D0%25BE%25D0%25B1%25D1%2580%25D0%25B0%25D0%25B7%25D0%25BE%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BF%25D1%2580%25D0%25B8%25D0%25B2%25D0%25B5%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BA%25D0%25BE%25D0%25BD%25D0%25B2%25D0%25B5%25D1%2580%25D1%2582%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F-%25D1%2581%25D1%2582%25D1%2580%25D0%25BE%25D0%25BA%25D0%25B8.html ты учел?

Автор: suxxor 26.12.2011, 14:55
bsa, а это к чему?

Автор: bsa 26.12.2011, 19:46
это я к тому, что твое регулярное выражение не умеет работать с юникодом и спец символами.

Автор: suxxor 26.12.2011, 21:02
bsa, как ты определил на глаз "...не умеет работать с юникодом..."? 

Автор: bsa 27.12.2011, 10:17
натрави твой регэксп на ссылку, что я дал. в результате должен получиться файл с русскими буквами и расширением html. а на самом деле что выйдет?
А на глаз очень просто: я не слышал чтобы regexp умел делать преобразование строк вида "%20%65%21" в " A!". По причине того, что формат url стандартен (не важно, для локального файла или удаленного), необходимо делать такое преобразование. В противном случае, ты лишишься возможность работать с именами файлов, содержащих пробелы и ряд других символов.

Автор: suxxor 27.12.2011, 14:22
bsa, ну для этого можно использовать функцию http://msdn.microsoft.com/en-us/library/windows/desktop/aa384342%28v=vs.85%29.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)