Php Zend 2路由主机名正则表达式

Php Zend 2路由主机名正则表达式,php,regex,zend-framework2,hostname,Php,Regex,Zend Framework2,Hostname,我想通过Zend 2中的路由类型主机名捕获我的(可选)子域和域 我不擅长调节,找不到能正常工作的东西 'type' => 'Hostname', 'options' => array( 'route' => '[:subdomain.]:project_domain', 'constraints' => array( 'subdomain' => '??REGEX??', 'project_domain'

我想通过Zend 2中的路由类型主机名捕获我的(可选)子域和域

我不擅长调节,找不到能正常工作的东西

'type' => 'Hostname',
'options' => array(
     'route' => '[:subdomain.]:project_domain',
     'constraints' => array(
          'subdomain' => '??REGEX??',
          'project_domain' => '??REGEX??',
     ),
),
'may_terminate' => false,
例1: www.domain.tld=>subdomain=www;project\u domain=domain.tld

例2: test.www.domain.tld=>subdomain=test;项目\域=www.domain.tld

例3: domain.tld=>project\u domain=domain.tld

如果有人能帮我这2个正则表达式模式,谢谢

我的结局是:

'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.sub.do-main.tld
如果有人发现一些不适合的东西,不要犹豫发表评论


谢谢。

阅读本文时,似乎只有在您想筛选子域匹配项时才需要约束正则表达式。您想要什么约束?示例1:www.domain.tld=>subdomain=www;project_domain=domain.tld;;;;示例2:test.www.domain.tld=>subdomain=test;项目\域=www.domain.tld