diff --git a/libraries/src/Filter/OutputFilter.php b/libraries/src/Filter/OutputFilter.php index bbb44cabaa251..f5aa0758c4f2e 100644 --- a/libraries/src/Filter/OutputFilter.php +++ b/libraries/src/Filter/OutputFilter.php @@ -90,6 +90,9 @@ public static function stringURLSafe($string, $language = '') // Trim white spaces at beginning and end of alias and make lowercase $str = trim(StringHelper::strtolower($str)); + // Remove any apostrophe. We do it here to ensure it is not replaced by a '-' + $str = str_replace("'", '', $str); + // Remove any duplicate whitespace, and ensure all characters are alphanumeric $str = preg_replace('/(\s|[^A-Za-z0-9\-])+/', '-', $str); diff --git a/tests/Unit/Libraries/Cms/Filter/OutputFilterTest.php b/tests/Unit/Libraries/Cms/Filter/OutputFilterTest.php index fe71294a1d9a1..84bc75f61856d 100644 --- a/tests/Unit/Libraries/Cms/Filter/OutputFilterTest.php +++ b/tests/Unit/Libraries/Cms/Filter/OutputFilterTest.php @@ -63,6 +63,12 @@ public function testStringURLSafe() OutputFilter::stringURLSafe('`1234567890-=~!@#$%^&*()_+ qwertyuiop[]\QWERTYUIOP{}|asdfghjkl;\'ASDFGHJKL:"zxcvbnm,./ZXCVBNM<>?'), 'Should clean keyboard string down to ASCII-7' ); + + $this->assertEquals( + 'joomlas-version', + OutputFilter::stringURLSafe('joomla\'s version'), + 'Should remove apostrophe from the string' + ); } /**