有许多类别属性代码(参见“Unicode 字符属性”部分),可用于与Perl 兼容的正则表达式 (PCRE)
我定义了一个正则表达式模式(命名为 subpattern),它应该匹配字母 ( \p{L}
)、数字 ( \p{N}
)、空格分隔符 ( \p{Zs}
),还有标点符号 ( \p{P}
)。
(?<sport>[\p{L}\p{N}\p{Zs}\p{P}]*)
由于我将其用于 URL 路由,因此应排除斜杠。我怎样才能做到这一点?
编辑:
关于上下文的附加信息:该模式用于 Zend Framework 2 模块中的路由定义。
/目录/config/module.config.php
<?php
return array(
...
'router' => array(
'routes' => array(
...
'sport' => array(
'type' => 'MyNamespace\Mvc\Router\Http\UnicodeRegex',
'options' => array(
'regex' => '/catalog/(?<city>[\p{L}\p{Zs}]*)/(?<sport>[\p{L}\p{N}\p{Zs}\p{P}]*)',
'defaults' => array(
'controller' => 'Catalog\Controller\Catalog',
'action' => 'list-courses',
),
'spec' => '/catalog/%city%/%sport%',
),
'may_terminate' => true,
'child_routes' => array(
'courses' => array(
'type' => 'segment',
'options' => array(
'route' => '[/page/:page]',
'defaults' => array(
'controller' => 'Catalog\Controller\Catalog',
'action' => 'list-courses',
),
),
'may_terminate' => true,
),
)
),
),
),
...
);