在laravel中捕捉西里尔的路线

时间:2014-11-05 11:22:41

标签: php regex laravel laravel-routing

我想要实现的目标

我希望抓住(例如)http://www.my-domain/Цезаря-Цезаря-1,我的代码会将其转换为http://www.my-domain/{slug}-{id}现在的问题是:

  • 我的正则表达技巧生锈
  • 在regexr.com上运行的东西在laravel中不起作用
  • 我无缘无故地收到404.

我尝试了什么 我现在用{any}抓住了slu ..但是我宁愿只把它包含在[a-z0-9-]+< - 这适用于拉丁语。但我还想添加西里尔语。

1 个答案:

答案 0 :(得分:1)

它似乎没有问题。

例如:

Route::get('Б/{x}', function($x) {
    return "Route found. x is $x";
});

当我运行网址http://domain/Б/Ж-Зa时,我得到的输出是Route found. x is Ж-Зa

修改

您可以使用以下规则:

Route::get('{slug}-{id}', function($slug, $id) {
    return "route found<br />slug is {$slug}<br />id is $id";
})->where('slug', '[^/]*')->where('id', '\d*');

甚至:

Route::get('{slug}-{id}', function($slug, $id) {
    return "route found<br />slug is {$slug}<br />id is $id";
})->where('slug', '.*')->where('id', '\d*');

两种情况的结果都是:

route found
slug is Цезаря-Цезаря
id is 1