Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > совпадать для всех поддоменов домена


Автор: dbykov 12.5.2009, 10:35
необходим шаблон для совпадение всех поддоменов, кроме www.example.com

под правило должно попадать
qwe.example.com
wow.example.com
hello.example.com
и т.д.
кроме
www.example.com

не смог найти правило, которое может указать "всё, кроме <строка>"

Автор: source777 12.5.2009, 11:05
А чем тебя не устраивает обычное сравнение строк?
if ($str != 'www.example.com' && preg_match('/\w+\.example\.com/', $str, $m)) ...

или для более общего случая
if (preg_match('/(\w+)\.(\w+)\.([a-z]{2,6})/', $str, $m) && $m[1]!='www') ...

P.S. Интерпретатора под рукой нет, но главное подход.

Автор: Nigel 12.5.2009, 11:09
Код

/^(?!.*?www).*\.example\.com/

Как-то так...

Автор: dbykov 12.5.2009, 11:31
Добавлено @ 11:34
Цитата(Nigel @ 12.5.2009,  11:09)
Код

/^(?!.*?www).*\.example\.com/

Как-то так...

Спасибо за овтет. "Как-то так..." не пропускает www.example.com, но также урезается wwwqqq.example.com и подобные ему. Пока это лучший вариант, будем искать точный вариант.

Автор: skyboy 12.5.2009, 14:35
просто и топорно:
Код

([^w][^.]*\.|w[^w][^.]*\.|ww[^w][^.]*\.|www[^.]+\.)

но кому это надо? smile

Автор: source777 12.5.2009, 21:17
Цитата(skyboy @  12.5.2009,  14:35 Найти цитируемый пост)
но кому это надо? smile

никому, эта задача вообще не для регулярных выражений, хотя решение уже привёл Nigel /^(?!www)\.example\.com/, но применять тут какое-либо регулярное выражение не эффективно, лучше explode и проверка получившихся частей.

Автор: skyboy 13.5.2009, 09:25
Код

(www.+|(?<!ww)w|(?<!w)ww|[^w].*)\.example\.com

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