Perl 互換の正規表現 (PCRE)に使用できるカテゴリ プロパティ コードが多数あります (「Unicode 文字プロパティ」を参照)。
文字 ( )、数字 ( )、スペース区切り ( ) だけでなく、句読点 ( ) にも一致する正規表現パターン ( subpattern という名前)を定義しました。\p{L}
\p{N}
\p{Zs}
\p{P}
(?<sport>[\p{L}\p{N}\p{Zs}\p{P}]*)
これを URL ルーティングに使用しているため、スラッシュは除外する必要があります。どうやってやるの?
編集:
コンテキストに関する追加情報: パターンは Zend Framework 2 モジュールのルート定義に使用されます。
/Catalog/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,
),
)
),
),
),
...
);