From 9184056b5e20c591e00d83b883aab9edde4c8f7c Mon Sep 17 00:00:00 2001 From: Jarkko Linnanvirta Date: Sun, 2 Jun 2019 11:43:51 +0300 Subject: [PATCH] URLSegmentFilter: Remove : characters from url segments when multibyte characters are allowed. --- src/View/Parsers/URLSegmentFilter.php | 2 +- tests/php/ORM/URLSegmentFilterTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/View/Parsers/URLSegmentFilter.php b/src/View/Parsers/URLSegmentFilter.php index c97fc2793..20d4fc0b5 100644 --- a/src/View/Parsers/URLSegmentFilter.php +++ b/src/View/Parsers/URLSegmentFilter.php @@ -36,7 +36,7 @@ class URLSegmentFilter '/\s|\+/u' => '-', // remove whitespace/plus '/[_.]+/u' => '-', // underscores and dots to dashes '/[^A-Za-z0-9\-]+/u' => '', // remove non-ASCII chars, only allow alphanumeric and dashes - '/[\/\?=#]+/u' => '-', // remove forward slashes, question marks, equal signs and hashes in case multibyte is allowed (and non-ASCII chars aren't removed) + '/[\/\?=#:]+/u' => '-', // remove forward slashes, question marks, equal signs, hashes and colons in case multibyte is allowed (and non-ASCII chars aren't removed) '/[\-]{2,}/u' => '-', // remove duplicate dashes '/^[\-]+/u' => '', // Remove all leading dashes '/[\-]+$/u' => '' // Remove all trailing dashes diff --git a/tests/php/ORM/URLSegmentFilterTest.php b/tests/php/ORM/URLSegmentFilterTest.php index bc49182c0..d13f91a6d 100644 --- a/tests/php/ORM/URLSegmentFilterTest.php +++ b/tests/php/ORM/URLSegmentFilterTest.php @@ -113,6 +113,6 @@ class URLSegmentFilterTest extends SapphireTest { $filter = new URLSegmentFilter(); $filter->setAllowMultibyte(true); - $this->assertEquals('url-with-bad-characters', $filter->filter('url?-with/-bad#-characters=')); + $this->assertEquals('url-with-some-bad-characters', $filter->filter('url?-with/-some:-bad#-characters=')); } }