zf2路由约束使用通配符/运算符

时间:2014-12-29 22:48:42

标签: php routing zend-framework2

我已阅读ZF2文档zend.mvc.routing,我看到以下示例经常使用: 什么是asterix *和+ sings在以下约束'[0-9] +'和'[a-zA-Z] [a-zA-Z0-9 _-] *'后面做什么?

return array(
  'router' => array(
    'routes' => array(
      'blog' => array(
        'type' => 'Zend\Mvc\Router\Http\Literal',
        'options' => array(
          'route'    => '/blog',
        ),
        'may_terminate' => true,
        'child_routes' => array(
          'post'  => array(
            'type' => 'Segment',
            'options' => array(
              'route'    => '/:category/page[/:page]',
              'constraints' => array(
                'category' => '[a-zA-Z][a-zA-Z0-9_-]*',
                'page'     => '[0-9]+',
              ),
            ),
          ),
        ),
      ),
    ),
  ),
)

1 个答案:

答案 0 :(得分:4)

它们是正则表达式,您可以在线找到大量关于它的文档。

这两个特定字符具有以下含义:

  • * - 量词,意味着它所遵循的令牌可能会出现0次或更多次
  • + - 与*相同,但意味着一次或多次

[...]表达式是字符类。

  • [0-9]代表任何一个数字
  • [a-zA-Z]代表任何一个字母为小写或大写字母的字符

您可以在[a-zA-Z0-9_-]中看到这些字符类,它们可以是字母,数字,下划线或连字符。

您还可以将字符类与量词组合起来:

  • [0-9]+表示一个或多个号码
  • [a-zA-Z][a-zA-Z0-9_-]*表示一个大小写字母,后跟任意数量的字母,数字,_-