正規表現のヘルプを探しています。
私はこのコードを持っています:
$router->add(
'/activate/{token:[a-zA-Z0-9]+}',
array (
'module' => 'frontend',
'controller' => 'user',
'action' => 'activate'
)
);
これは問題なく動作します。ただし、以下のものはそうではありません:
$router->add(
'/activate/{token:[a-zA-Z0-9]{32}}',
array (
'module' => 'frontend',
'controller' => 'user',
'action' => 'activate'
)
);
私がCで持っているマッチングメカニズムは(preg_match_allでも動作します)
'#{([a-zA-Z][a-zA-Z0-9\_\-]*)(:([^}]+))*}#'
2番目の例を機能させる方法について、いくつかの指針をいただければ幸いです。
編集
preg_match_all(
'#{([a-zA-Z][a-zA-Z0-9\_\-]*)(:([^}]+))*}#',
'/manual/{language:[a-z]{2}}/{file:[a-z]+}.html',
$matches,
PREG_SET_ORDER
);
次のようなものを返したい:
Array
(
[0] => Array
(
[0] => {language:[a-z]{2}}
[1] => language
[2] => :[a-z]{2}
[3] => [a-z]{2}
)
[1] => Array
(
[0] => {file:[a-z]+}
[1] => file
[2] => :[a-z]+
[3] => [a-z]+
)
)