Домен второго уровня

Статус
В этой теме нельзя размещать новые ответы.
Опять промах
Для просмотра ссылки Войди или Зарегистрируйся false
но
Для просмотра ссылки Войди или Зарегистрируйся и
Для просмотра ссылки Войди или Зарегистрируйся
так же- false
Правильный вариант:
PHP:
<?php
function isValidSubdomain($host){ 
//true- если $host домен второго уровня
    $host=str_replace("http://", '', strtolower($host)); 
    $hostParts=explode('.', $host); 
    if(count($hostParts)==2||(count($hostParts)==3&&$hostParts[0]=='www'))return true; 
    return false; 
} 
?>
Опять же доказывает, что регуляркой проще. Если регулярок не знаешь, тогда конечно, или постить на форум, или писать программный метод.
 
Регулярки проще, если знаешь конечно. Для этого их и придумали.
я не смотрел исходные тексты модулей, который обрабатывают регулярки, но могу прикинуть, что работают они медленнее, чем обычные функции для работы со строками (str_)
 
Опять промах
Для просмотра ссылки Войди или Зарегистрируйся false
но
Для просмотра ссылки Войди или Зарегистрируйся и
Для просмотра ссылки Войди или Зарегистрируйся
так же- false

Каюсь. Про www, каюсь, упустил, потому что брал из готовой реализации где они вообще запрещены. Незачем вводить поддержку таких ссылок и потом париться с ботами. И вот сколько работаю как то ни разу не задумался, что com.ru - это один уровень. Придется писать новый тест.
 
com.ru - это один уровень.
Разве один?? Я вообще-то имел в виду что для доменов 4-ого, 5-го и более уровней он выдаст значение то же что и для 2-го, т.е. посчитает их.

HatoL
Медленней, особенно в PHP. Впрочем, и в скрипте выше упор на скорость не сделан.
 
Чет вы перемудрили.
Мой метод на все что не xxx.xxx.xx и равное Для просмотра ссылки Войди или Зарегистрируйся выдаст false, то есть что поддомен неккоректен, то есть ну никак не посчитает.

Давайте будем оба внимательнее. И вообще мы ушли от темы.

А регистраторы предлагают домены в зонах типа .com.cn (вот тут хотя бы Для просмотра ссылки Войди или Зарегистрируйся) так что таки один.

Интересно, а хоть одно из предложенных здесь регулярных выражений учло это?!! :)

Это условие усложняет регулярку. Ведь зона может быть и ru и com.ru. Нет четкого условия. Не пробивать же все варианты в регулярке. Так что метод или регулярка(но метод быстрее писать), заточенный под домен, рулит.
 
Чувствую себя последним чайником :)
Ребят, среди кучи кода, которую вы мне тут написали, есть рабочая функция?
 
Да они тут все рабочие. Просто тебе надо было уточнить в каком виде подается входящая строка. ну например вид такой Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся. Или еще как.
И тогда уже легко было бы вычислить правильно.

А так всем приходиться гадать, то ли ты проверяешь правильность захода на поддомен для редиректа, то ли выбираешь из сырого текста поддомены. Надо точнее задавать вопросы.
 
Да они тут все рабочие. Просто тебе надо было уточнить в каком виде подается входящая строка. ну например вид такой Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся. Или еще как.
И тогда уже легко было бы вычислить правильно.

А так всем приходиться гадать, то ли ты проверяешь правильность захода на поддомен для редиректа, то ли выбираешь из сырого текста поддомены. Надо точнее задавать вопросы.

Уточняю:

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

это все домены не второго уровня

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

это всё домены второго уровня

мне нужно просто выяснить, отдельный ли это сайт, или же он принадлежит фрихосту или блогоферме
и так много тысяч раз )
 
Уууу. мои знания уровней доменов явно оставляют желать лучшего.
Тогда уточнение. А domen.com.ru допустим, как должны обрабатываться? Таких ведь сайтов полно.

И плиз, все таки уточните в каком виде у вас имеются входные данные

----
Вот например первый предложенный вариант в этом топике ^http://(?:www\.)?\w+\.\w{2,}$ отлично распознает домен, если он уже приведен к нормальному виду Для просмотра ссылки Войди или Зарегистрируйся, то есть может подтвердить, что это домен 2го уровня.
Однако выборка из сырого текста или списка таким выражением терпит неудачу.

Поэтому надо было проще задать тему
мол у меня есть список доменов в таком виде. И мне нужно выбрать только домены 2го уровня или проверить прогоняя все, является ли домен доменом второго уровня.
А так задача вырванная из контекста.
 
Кхм...
Насчет com.ru - вероятно, он должен интерпретироваться как домен второго уровня. Так же как и msk.ru, spb.ru, com.ua и прочие подобные... Тогда задача сильно усложняется )
Кроме того, возможны варианты, когда сайт находится не на поддомене, а в папке (например, domain.com/~user). Эти тоже нужно исключить.
Входные данные - файл со списком адресов, по одному на строке.

В принципе, достаточно двух выражений:
1. Которое определить 100% домены второго уровня
2. Которое определит домены com.ru, com.ua и прочие из оставшихся после первого адресов
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху