![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
Подскажите как решить данную проблему. Нужно вытащить название поддомена из строки
есть несколько моментов, половину решил, а половину не смог. login.site.com должен быть результат: login www.login.site.com должен быть результат: login site.com должен быть результат: false login.site.com.ua должен быть результат: login www.login.site.com.ua должен быть результат: login site.com.ua должен быть результат: false |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
parse_url()
-------------------- Amazing ![]() |
|||
|
||||
nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
не плохо, но всеравно не решеает проблем.
|
|||
|
||||
SergV |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
А что мешает с помощью explode разбить строку по точкам, и по условию получить то что требуется.
К примеру при разбивке будет несколько частей, где две последние будут отвечать за домены первого и второго уровня, и их так сказать сразу откидываем, а уже по общему количеству и с проверкой на www можно получить то что нужно. Пример не привожу, это элементарные условия "if" или "switch - case" Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
поскольку www почему-то не считаете доменом, то для начала отрезать все www в начале урла
Затем точно так же отрезать site.com в конце урла Остаток будет искомыми поддоменами. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
Когда стандартные средства не подошли в бой идут регулярки)
Накидал на калеках теоретически должно работать
Если в строке есть первые www... это не субдомен, www.login.mail.ru субдомен будет Login Это сообщение отредактировал(а) Sanchezzz - 17.7.2013, 20:02 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
Вот это нам не известно. К примеру у нас есть несколько доменов. site.com.ua site.ru site.com тут вот проблемы уже начинаются |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
тогда вообще никак. И даже теоретически никак. Для того чтобы выяснить поддомен ты должен быть в курсе его родительского домена. В первом приближении считаем доменом все что находится сразу после tld т.е. site.com разбирается на две части site - домен com - tld А случаи site.yyy.xx не разбираются в принципе если ты не перечислишь все возможные варианты (или правила) yyy.xx которые ты будешь считать эквивалентом tld Т.е. пока ты не определишься с правилами сделать ты ничего не сможешь. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
krundetz |
|
||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
а кто нам мешает сделать создать фильтр? в него добавим все домены первого уровня, и доменные типа com.ua, com.ru, org.com и т.д. и т.п. Информация же не закрытая и сбор ее можно автоматизировать.
полностью согласен. ТС вам просто надо задать правила по которым будет определяться что считается доменом, а что поддоменом. |
||||
|
|||||
SergV |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Чет тут всё запутано у вас.
![]() Я вроде привёл вариант наипростейший, разбить домен с помощью explode, и получим масив, где последние 2 значения это домен скажем site.com или site.ru. А всё что до этого, это субдомен(ы) или www. А уже с этим 1-2 значения то думаю не сложно решить что делать..., Здесь регулярка нужна разве что на проверку www. Для примера, имеем 4 адреса sub.domen.ru, www.domen.ru, sub.sub.domen.ru и domen.ru При разбивке получим такие массивы: array( [0] => sub [1] => domen [2] => ru ) array( [0] => www [1] => domen [2] => ru ) array( [0] => sub [1] => sub [2] => domen [3] => ru ) array( [0] => domen [1] => ru ) Теперь остаётся проверить на count, и: если 2 значения в масиве, значит субдоменов нет, если 3 значения, проверяем 0-ю ячейку на www, и получаем либо субдомен, либо нет если 4 значения, то опять в том же дуже по первым двум, так как 3 и 4 это не то что нужно... Проще паренной репы, и не каких хитрых танцев с бубном в регулярках... ![]() Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
SergV, да неправильный Ваш вариант, неправильный... Нет однозначных лексических правил определения поддомена.
Есть сайты www.odessa.ua и www.misto.odessa.ua Сайта odessa.ua не существует, ведь odessa.ua - доменная зона. По сути, www - это название домена в зоне odessa.ua. misto - не является поддоменом odessa.ua, misto.odessa.ua - полностью независимый от www.odessa.ua сайт. misto - название домена в зоне odessa.ua. При этом www - поддомен домена misto.odessa.ua. И это реальный пример. И не исключение. Поддомен поддоменом делает человеческое субъективное восприятие. В самом деле - что такое поддомен? На программном уровне все есть поддомены. Более того, даже ru, ua и т.д. - это поддомены! Это поддомены корневого домена <пустая строка>. Да, да, допишите точку после ua, ru и т.д. любого сайта и это будет работать! По сути, домена нет. Он - пустая строка. Есть только поддомены. Доменные зоны и прочее - это просто соглашения. Договор между людьми о том, какие названия сайтом могут быть, а какие не могут. Нельзя зарегистрировать сайт com.ua или ua только потому, что все на это согласились и теперь базе доменных имен эти домены заняты, просто не ведут ни на какой сервер. Это сообщение отредактировал(а) Arantir - 18.7.2013, 14:46 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
SergV |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
O_o Arantir, я привёл лишь логический вариант решения поставленной проблемы... Есть строка, есть субъекты строки разделённые точкой, а дальше нужен результат - получение определённого субъекта строки. Вот я и предложил как его получить, а все слова про - "субъективное восприятие" и т.д., к вопросу отношения не имеют.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Доменные зоны второго уровня тоже входят в проблему еще с первого поста, но вашим вариантом не учитываются. В частности, для site.com.ua поддоменом выйдет site, хотя это не так. В принципе, есть всего одна проблема в определении поддомена: доменные зоны могут быть как первого так и второго уровня. И определить их можно только словарным методом (сравнивая со списком оных). Про субъективноть - это я в целом по теме, а не лично к Вашему посту, если что... -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
SergV |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Моя ошибка..., недосмотрел что в списке последний пункт не login а site, и везде упор идёт только на login. В таком случае вопрос не совсем конкретно описан, из него не ясно, будет ли искомое всегда одного названия типа - логин, или всегда разное. Если первое, то тут обычная регулярка на проверку этого слова, если два, то тут сложнее, об этом уже написали... Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
krundetz |
|
||||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
ключевые слова приведу пожалуй простенький пример сравнения со словарем
TC если вы усовершенствуете регулярку и блок условных операторов то получите то что хотели. Это сообщение отредактировал(а) krundetz - 19.7.2013, 10:20 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |