![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
День добрый.
Есть абсолютный адрес web-страницы и ссылка (неизвестно какая - абсолютная, локальная) в этом документе. Как их корректно "склеить"? BaseUrl = 'http://www.mail.ru/faq/page1.htm'; Link = '../quest.asp'; Может кто решал подобную задачу и знает готовые компоненты, типа как TIdURI для работы с URL? Если нет, подскажите алгоритм. Вариантов довольно много возникает - ссылок несколько видов, плюс BaseUrl может быть видов http://www.mail.ru/faq/page1.htm?q=test http://www.mail.ru/faq/?q=test http://www.mail.ru/faq?q=test и так далее Это сообщение отредактировал(а) Ibragim - 21.1.2007, 14:18 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: нет Всего: 121 |
Непонятно, что должно получиться на выходе из BaseUrl и Link
Ну тут регулярки я думаю будет удобно заюзать ![]() ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
получаться должно приблизительно так
BaseUrl = 'http://www.site.com/page1.html' Link = 'page2.htm' Result:= 'http://www.site.com/page2.htm' BaseUrl = 'http://www.site.com/demo/page1.html' Link = './page2.htm' Result:= 'http://www.site.com/page2.htm' PS Тему создал после трех часов рысканья по форуму, что-то не нашел. Счас посмотрел все посты за последние сутки, снова нет. Кинь ссылкой, если не лень. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: нет Всего: 121 |
А если:
BaseUrl = 'http://www.site.com/demo/page1.html' Link = '../page2.htm' то: http://www.site.com/demo/page2.html ? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
а вот хрен его знает...
по логике как раз 'http://www.site.com/page2.htm', поскольку две точки это выход на уровень вверх по иерархии документов. В общем плане смотри какая задача. Вот я в опере навожу курсор на любую ссылку, и она мне показывает хинт на ПРАВИЛЬНУЮ абсолютную ссылку, без разницы как ссылка записана в документе. Хочу такое же ![]() Я скачиваю документ ht.get(), ищу href= и должен собрать ссылки, чтобы дальше запихать в ht.get и скачать уже документы по эти ссылкам. Собрать их не сложно, а вот алгоритма преобразования так и не нащупал. Може пойти почитать учебник по html какие ссылки бывают... |
|||
|
||||
December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 1 Всего: 57 |
Наиболее грамотный путь в этом случае:
1) разбить базовый урл на составляющие 2) определить абсолютность и относительность ссылки 3) в зависимости от пункта второго либо склеить урл с доменом и портом, либо компенсировать каждые .. базовыми каталогами Регулярки здесь совсем не нужны ![]() Попробуй вот таким простым алгоритмом, если не получится - вечером код выложу |
|||
|
||||
December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 1 Всего: 57 |
Собственно, вот... Функция не моя, дотошно не проверял, но работает исправно.
|
|||
|
||||
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
О, большое спасибо! Эта явно покорректней, чем то что я накатал когда не дождался ответа!
|
|||
|
||||
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
Вот накатал вроде еще более универсально, чем предлагал December. Може кому пригодится.
|
|||
|
||||
December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 1 Всего: 57 |
эээ
имхо этот вариант содержит некоторые недобработки ![]() например: ./././test.html ../../../test.html |
|||
|
||||
Ibragim |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 28.9.2004 Где: Киев Репутация: нет Всего: нет |
да знаю
![]() Но такое бывает весьма нечасто, а Ваша не так клеила './' , или може я чего не такпонял? ![]() <добавлено позже> Счас еще раз потестил - все гуд... Наверно я где-то лажанул Тогда мое почтение, вариант December'a лучше ![]() Вопрос закрыт ![]() Это сообщение отредактировал(а) Ibragim - 26.1.2007, 21:04 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |