Идентификатор с косыми чертами в коде / контроллере Codeigniter
У меня есть этот маршрут в Codeingniter
$route['([en|fr|es|it]+)/(.+)'] = 'My_Controller/index/$1/$2';
где первый аргумент - это идентификатор lang, а второй - уникальный идентификатор. Идентификатор имеет косую черту в своем формате, например:
item/34/public
something/else
name/for/this/can/be/12345
Количество слешей в идентификаторе может быть от 0 до (никто не знает), поэтому на самом деле я получаю идентификатор в My-Controller с помощью этого хака:
public function index($lang,$id)
{
$hack_id = $this->uri->segment(3);
if ($this->uri->segment(4)) {
$hack_id .= "/".$this->uri->segment(4);
}
if ($this->uri->segment(5)) {
$hack_id .= "/".$this->uri->segment(5);
}
/*...and so go on if clauses, repeating and concatenating ...*/
/* and finally passing the hack_id data to view */
}
Это работает, но я думаю, что это странное решение (я на самом деле не передаю какой-либо идентификатор) и должно быть способом сделать это лучше, более разумным решением (может быть, в маршрутах?).
Любая помощь или подсказка приветствуются...