Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Домен из URL'а 
V
    Опции темы
cembo
Дата 4.9.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



Покажите, пожалуйста, как лучше всего из такого URL'а как something.something.co.uk получить только ету часть: something.co.uk функция должна работать со всеми УРЛьами и многостепенними доменами:

google.com = google.com
google.co.uk = google.co.uk
http://mail.google.co.uk/index.php = google.co.uk

 smile  smile 
PM MAIL   Вверх
dumb
Дата 4.9.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



PM MAIL   Вверх
Alexeis
Дата 4.9.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Yanis, наверное все-таки не последний разделитель, что если урл будет таким:
http://rsdn.ru/?/res/book/delphi/delphi2005.xml?

Это сообщение отредактировал(а) alexeis1 - 4.9.2006, 17:36


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
cembo
Дата 4.9.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



Цитата(Yanis @ 4.9.2006,  17:27)
cembo

Код
const
  sURL = 'http://forum.vingrad.ru/index.php?showtopic=110542';
var
  s: string;
begin
  s := Copy(sURL, 1, LastDelimiter('/', sURL));
end;


P. S. Если что напишу полный вариант, но самому то интереснее кодить....

я что то такое уже мутил, но вот какая проблема:

http://forum.vingrad.ru/index.php?showtopic=110542 должен вернуть vingrad.ru не  forum.vingrad.ru

dumb: спасибо, незнал о такой функции, но помоему проблема будет та же, но ещё посмотрю...

впринципе можно создать арраи со всеми возможномы концовками доменов а потом просто использовать Pos('.',URL), но ето как то долго, и некрасиво.

P.S. новий пример Yanis'a: то же самое...

Огромное спасибо всем, кто помогают!!!



Это сообщение отредактировал(а) cembo - 4.9.2006, 17:56
PM MAIL   Вверх
dumb
Дата 4.9.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



хе, если ты хочешь вытаскивать из имени домен второго уровня, то это естественно уже сам. возьми имя хоста, полученное вышеуказанными функциями и ищи вторую точку с конца: если есть - отрубай по ней, если нет - на "нет" и суда нет... smile
PM MAIL   Вверх
cembo
Дата 4.9.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



а если урл типа http://some.thing.that.just.goes.here.co.uk ???
PM MAIL   Вверх
BUGOR
Дата 4.9.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16



А я бы заюзал регуляркиsmile
На всех предложенных в топике URL'ах работает на ура. 
Код

function GetDomen(url: string): string;
var
exp: TRegExpr;
begin
  exp := TRegExpr.Create;
  if url[length(url)-1] <> '/' then url := url + '/';
  exp.Expression := '\.?([-A-Za-z0-9]+)(\.[A-Za-z]{2,3})+/';
  if exp.Exec(url) then begin
    Result := exp.Match[0];
    if result[1] = '.' then Result := Copy(Result, 2, length(Result)-1);
    result := copy(result, 1, length(result)-1);
  end;
  exp.Destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetDomen('http://mail.google.co.uk/index.php'));
end;


Добавлено @ 18:47 
Попробовал свою функци на http://some.thing.that.just.goes.here.co.uk, вернула:

---------------------------
Project1
---------------------------
here.co.uk
---------------------------
OK   
---------------------------

Правильно или нет?smile


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Rodman
Дата 4.9.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Ну я бы на крайняк разобрал URL как строку

Код

procedure TForm1.BitBtn1Click(Sender: TObject);
var s,res:String;
    t, e, tog, countdot:Integer;
begin
  e:=0;
  for t:=1 to 3 do
    e:=PosEx('/',Edit1.Text,e+1);
  if(e=0)then
    tog:=length(Edit1.Text)
  else
    tog:=e;
  countdot:=0;
  s:=Edit1.Text;
  for t:=tog downto 1 do
  begin
    if(s[t]='.')then
      inc(countdot);
    if(countdot=2)then
      Break;
    res:=res+s[t];
  end;
  s:='';
  for t:=0 to Length(res)do
    s:=s+res[Length(res)-t];
  Edit1.Text:=s;
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
cembo
Дата 4.9.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.9.2006

Репутация: нет
Всего: нет



Цитата(BUGOR @ 4.9.2006,  18:45)
А я бы заюзал регуляркиsmile
На всех предложенных в топике URL'ах работает на ура. 
Код

function GetDomen(url: string): string;
var
exp: TRegExpr;
begin
  exp := TRegExpr.Create;
  if url[length(url)-1] <> '/' then url := url + '/';
  exp.Expression := '\.?([-A-Za-z0-9]+)(\.[A-Za-z]{2,3})+/';
  if exp.Exec(url) then begin
    Result := exp.Match[0];
    if result[1] = '.' then Result := Copy(Result, 2, length(Result)-1);
    result := copy(result, 1, length(result)-1);
  end;
  exp.Destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetDomen('http://mail.google.co.uk/index.php'));
end;


Добавлено @ 18:47 
Попробовал свою функци на http://some.thing.that.just.goes.here.co.uk, вернула:

---------------------------
Project1
---------------------------
here.co.uk
---------------------------
OK   
---------------------------

Правильно или нет?smile

Спасибо!!! Работает на ура! Добавил бы репутацию, если бы было достаточно прав. Rodman, также спасибо, но вариант BUGOR'a немного лучше.  smile  smile 
PM MAIL   Вверх
Fedia
Дата 5.9.2006, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 8
Всего: 13



BUGOR, ну просто не могу не поставить тебе еще один + smile Сейчас посмотрел демки TRegExpr. Мощная вещь !


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Elfebet
Дата 5.9.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



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


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Alexeis
Дата 5.9.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Elfebet, там один модуль, который завется RegExpr.pas 
(точно непомню), но это сторонний компонент и с delphi не поставляется.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BUGOR
Дата 5.9.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 5
Всего: 16





--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
Elfebet
Дата 5.9.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



всем Спасибо, библиотеку нашел  и разобрался smile 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.