diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index 8c16247..421f863 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -144,6 +144,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute } } + $url = '/' . ltrim($url, '/'); $url .= join('/', $unknownParams); return rtrim($url, '/') . '/'; diff --git a/test/RouterUrlTest.php b/test/RouterUrlTest.php index 7135b22..4ea583c 100644 --- a/test/RouterUrlTest.php +++ b/test/RouterUrlTest.php @@ -28,6 +28,21 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase TestRouter::router()->reset(); } + public function testUnicodeCharacters() + { + // Test spanish characters + TestRouter::get('/cursos/listado/{listado?}/{category?}', 'DummyController@method1', ['defaultParameterRegex' => '[\w\p{L}\s-]+']); + TestRouter::debugNoReset('/cursos/listado/especialidad/cirugía local', 'get'); + $this->assertEquals('/cursos/listado/{listado?}/{category?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); + + // Test danish characters + TestRouter::get('/kategori/økse', 'DummyController@method1', ['defaultParameterRegex' => '[\w\ø]+']); + TestRouter::debugNoReset('/kategori/økse', 'get'); + $this->assertEquals('/kategori/økse/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); + + TestRouter::router()->reset(); + } + public function testOptionalParameters() { TestRouter::get('/aviso/legal', 'DummyController@method1');