Added unicode parameter regex support.

This commit is contained in:
Simon Sessingø
2017-08-23 22:49:35 +01:00
parent b3e99a2283
commit 9f509ac818
3 changed files with 4 additions and 4 deletions
@@ -74,7 +74,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute
$regex = sprintf(static::PARAMETERS_REGEX_FORMAT, $this->paramModifiers[0], $this->paramOptionalSymbol, $this->paramModifiers[1]); $regex = sprintf(static::PARAMETERS_REGEX_FORMAT, $this->paramModifiers[0], $this->paramOptionalSymbol, $this->paramModifiers[1]);
if (preg_match_all('/' . $regex . '/', $this->url, $matches)) { if (preg_match_all('/' . $regex . '/u', $this->url, $matches)) {
$this->parameters = array_fill_keys($matches[1], null); $this->parameters = array_fill_keys($matches[1], null);
} }
} }
+2 -2
View File
@@ -116,7 +116,7 @@ abstract class Route implements IRoute
// Ensures that hostnames/domains will work with parameters // Ensures that hostnames/domains will work with parameters
$url = '/' . ltrim($url, '/'); $url = '/' . ltrim($url, '/');
if (preg_match_all('/' . $regex . '/', $route, $parameters)) { if (preg_match_all('/' . $regex . '/u', $route, $parameters)) {
$urlParts = preg_split('/((\-?\/?)\{[^}]+\})/', rtrim($route, '/')); $urlParts = preg_split('/((\-?\/?)\{[^}]+\})/', rtrim($route, '/'));
@@ -154,7 +154,7 @@ abstract class Route implements IRoute
$urlRegex = preg_quote($route, '/'); $urlRegex = preg_quote($route, '/');
} }
if (preg_match('/^' . $urlRegex . '\/?$/', $url, $matches) > 0) { if (preg_match('/^' . $urlRegex . '\/?$/u', $url, $matches) > 0) {
$values = []; $values = [];
+1 -1
View File
@@ -31,7 +31,7 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase
public function testUnicodeCharacters() public function testUnicodeCharacters()
{ {
// Test spanish characters // Test spanish characters
TestRouter::get('/cursos/listado/{listado?}/{category?}', 'DummyController@method1', ['defaultParameterRegex' => '[\w\p{L}\s-]+']); TestRouter::get('/cursos/listado/{listado?}/{category?}', 'DummyController@method1', ['defaultParameterRegex' => '[\w\p{L}\s-]+']);
TestRouter::debugNoReset('/cursos/listado/especialidad/cirugía local', 'get'); TestRouter::debugNoReset('/cursos/listado/especialidad/cirugía local', 'get');
$this->assertEquals('/cursos/listado/{listado?}/{category?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); $this->assertEquals('/cursos/listado/{listado?}/{category?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl());