我想在 CakePHP 路由中做以下更改。网站 URL 之后的任何单词或单词组(用连字符分隔),例如example.com/someword
或example.com/some-word
应该重定向到controller => posts, action => view
. 但我的问题是单词应该是unicode。我已经为 URL 文本尝试了这个正则表达式,但它不起作用。
Router::connect ('/:link', array ('controller' => 'posts', 'action' => 'view'), array ('pass' => array ('link'), 'link' = > '/^['.json_decode('"\u0531"').'-'.json_decode('"\u0587"').'-]+$/u'));
我想提一下,我的正则表达式
'/^['.json_decode('"\u0531"').'-'.json_decode('"\u0587"').'-]+$/u',
如果我要进行一些通常的 preg_match 之类的,那就可以了
$regg = '/^['.json_decode('"\u0531"').'-'.json_decode('"\u0587"').'-]+$/u';
if (preg_match($regg, "my unicode string", $match)) {
var_dump($match); // outputs string as expected
}
die;
编辑
我最终得到了这个代码
Router::connect ( '/:link', array ('controller' => 'posts', 'action' => 'view' ), array ('pass' => array ('link'), 'link' => '((?![a-zA-Z]).)+' ) );
就像让我的网址包含除了英文字母之外的所有内容,但这不是我需要的东西,如果我有 2 种或更多不同的语言而不是英语 - 这种方法不起作用。因此,我想将每种语言的单词发送到单独的操作中。
蛋糕版本 2.x
编辑 2
有替代解决方案,如下面的答案,绕过这个问题,但我正在寻找做我需要的确切方法。
谢谢