2014-10-31 5 views
1

Я хочу, чтобы поймать мой (необязательно) субдомен и домен с помощью типа маршрута Hostname в Зенд 2.Zend 2 Route Hostname REGEX

Я плохо regexing и не смог найти что-то работает правильно.

'type' => 'Hostname', 
'options' => array(
    'route' => '[:subdomain.]:project_domain', 
    'constraints' => array(
      'subdomain' => '??REGEX??', 
      'project_domain' => '??REGEX??', 
    ), 
), 
'may_terminate' => false, 

Пример 1: www.domain.tld => подобласть = WWW; project_domain = domain.tld

пример 2: test.www.domain.tld => subdomain = test; project_domain = www.domain.tld

Пример 3: domain.tld => project_domain = domain.tld

Если кто-то может помочь мне для этого 2 шаблонов регулярных выражений, спасибо!

+0

Чтение [ZF2 Hostname Документация маршрута] (http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html#zend-mvc-router-http-hostname) выглядит вам нужно регулярное выражение ограничений только в том случае, если вы хотите отфильтровать совпадения поддоменов. Какие ограничения вы хотите? – kums

+0

пример 1: www.domain.tld => subdomain = www; project_domain = domain.tld ;;;; пример 2: test.www.domain.tld => subdomain = test; project_domain = www.domain.tld –

ответ

1

Я закончил с этим:

'type' => 'Hostname', 
'options' => array(
    'route' => '[:subdomain.]:project_domain', 
    'constraints' => array(
     'subdomain' => '([a-zA-Z0-9-]+)?([^.])', 
     'project_domain' => '(([a-zA-Z0-9-]+)\.)+([a-zA-Z0-9]+)', 
    ), 
), 

Он работает с моими прецедентами:

  • test.domain.tld
  • domain.tld
  • test1.sub.domain. tld
  • asd-asd.do-main.tld

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

спасибо.

Смежные вопросы