zf2路由中的正则表达式

时间:2013-07-23 12:16:12

标签: php regex zend-framework2

您好我正在尝试在zf2路由中传递正则表达式,我的路由器看起来像这样:

    'exampleroute' => array(
            'type'    => 'segment',
            'options' => array(

                    'route'    => '/exampleroute/[:regexparameter]',
                    'constraints' => array(

                             'regexparameter' => '[a-zA-Z][a-zA-Z0-9_-][$.]*',

                    ),
                    'defaults' => array(

                            '__NAMESPACE__' => 'Mynamespace\Controller',
                            'controller'    => 'exampleroute',
                            'action'        => 'example',
                    ),
            ),
    ),

我想传递以下网址:http://mydomain.com/exampleroute/$2y$14$aPW5u7oGpuuMPRKRz6la1.m2SpJ2STFJ9BZ7giSwfKQxWKIuTODmW

但是它给我一个错误“请求的网址无法通过路由匹配。”

2 个答案:

答案 0 :(得分:2)

[a-zA-Z][a-zA-Z0-9_-][$.]*表示:

  1. 第一个符号必须为a-zA-Z
  2. 第二个符号必须为a-zA-Z0-9_-
  3. 后跟任意数量的$.符号
  4. 我想你需要这个:

    [a-zA-Z0-9_-$.]*

答案 1 :(得分:0)

现在这样工作:

'exampleroute' => array(
        'type'    => 'segment',
        'options' => array(

                'route'    => '/exampleroute/[:regexparameter]',
                'constraints' => array(

                         'regexparameter' => '[$.a-zA-z0-9_-]*',

                ),
                'defaults' => array(

                        '__NAMESPACE__' => 'Mynamespace\Controller',
                        'controller'    => 'exampleroute',
                        'action'        => 'example',
                ),
        ),
),