CakePHP ルートで次の変更を行いたいと考えています。example.com/someword
またはのような Web サイト URL の後にある単語または単語のグループ (ハイフンで区切られている) は、example.com/some-word
にリダイレクトされcontroller => posts, action => view
ます。しかし、私の問題は、単語がユニコードでなければならないことです。URL テキストに対してこの正規表現を試しましたが、うまくいきません。
Router::connect ( '/:link', 配列 ('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]).)+' ) );
URL に英語以外のすべてを含めるようにしますが、英語以外の言語が 2 つ以上ある場合、これは必要ありません。この方法は機能しません。そこで、各言語の単語を別々のアクションに送りたいと思います。
ケーキ バージョン 2.x
編集2
以下の回答のように、質問を回避するための代替ソリューションがありますが、必要なことを正確に行う方法を探しています。
ありがとう