mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 22:02:15 +00:00
Added unicode parameter regex support.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = [];
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user