diff --git a/src/Extension/HeadingPermalink/Slug/DefaultSlugGenerator.php b/src/Extension/HeadingPermalink/Slug/DefaultSlugGenerator.php index 6207da0b5d..65c920f94e 100644 --- a/src/Extension/HeadingPermalink/Slug/DefaultSlugGenerator.php +++ b/src/Extension/HeadingPermalink/Slug/DefaultSlugGenerator.php @@ -24,8 +24,8 @@ public function createSlug(string $input): string $slug = \mb_strtolower($slug); // Try replacing whitespace with a dash $slug = \preg_replace('/\s+/u', '-', $slug) ?? $slug; - // Try removing non-alphanumeric and non-dash characters - $slug = \preg_replace('/[^\p{Lu}\p{Ll}\p{Lt}\p{Nd}\p{Nl}\-]/u', '', $slug) ?? $slug; + // Try removing characters other than letters, numbers, and marks. + $slug = \preg_replace('/[^\p{L}\p{Nd}\p{Nl}\p{M}-]+/u', '', $slug) ?? $slug; return $slug; } diff --git a/tests/unit/Extension/HeadingPermalink/Slug/DefaultSlugGeneratorTest.php b/tests/unit/Extension/HeadingPermalink/Slug/DefaultSlugGeneratorTest.php index 08847f29b3..f892408011 100644 --- a/tests/unit/Extension/HeadingPermalink/Slug/DefaultSlugGeneratorTest.php +++ b/tests/unit/Extension/HeadingPermalink/Slug/DefaultSlugGeneratorTest.php @@ -49,5 +49,15 @@ public function dataProviderForTestCreateSlug() yield ['ŤĘŜŦ', 'ťęŝŧ']; yield ["\nWho\nput\n\n newlines \nin here?!\n", 'who-put-newlines-in-here']; + + yield ['අත්හදා බලන මාතෘකාව', 'අත්හදා-බලන-මාතෘකාව']; + yield ['අත්හදා බලන මාතෘකාව -', 'අත්හදා-බලන-මාතෘකාව--']; + yield ['අත්හදා බලන මාතෘකාව - ', 'අත්හදා-බලන-මාතෘකාව--']; + yield ['අත්හදා බලන මාතෘකාව - අ', 'අත්හදා-බලන-මාතෘකාව---අ']; + + yield ['测试标题', '测试标题']; + yield ['测试 # 标题', '测试--标题']; + yield ['测试 x² 标题', '测试-x-标题']; + yield ['試験タイトル', '試験タイトル']; } }