Browse Source

Simplify regex used in Text::slug().

ADmad 10 years ago
parent
commit
2e0ae4300d
2 changed files with 9 additions and 4 deletions
  1. 5 4
      src/Utility/Text.php
  2. 4 0
      tests/TestCase/Utility/TextTest.php

+ 5 - 4
src/Utility/Text.php

@@ -875,15 +875,16 @@ class Text
             'transliteratorId' => static::$defaultTransliteratorId
         ];
 
+        $string = transliterator_transliterate($options['transliteratorId'], $string);
+
         $quotedReplacement = preg_quote($options['replacement'], '/');
         $map = [
-            '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
-            '/[\s\p{Zs}]+/mu' => $options['replacement'],
+            '/[^\sa-zA-Z0-9]/mu' => ' ',
+            '/[\s]+/mu' => $options['replacement'],
             sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
         ];
-
         $string = preg_replace(array_keys($map), array_values($map), $string);
 
-        return transliterator_transliterate($options['transliteratorId'], $string);
+        return $string;
     }
 }

+ 4 - 0
tests/TestCase/Utility/TextTest.php

@@ -1605,6 +1605,10 @@ podeís adquirirla.</span></p>
                 'Foo+Bar+Not+just+for+breakfast+any+more'
             ],
             [
+                'A æ Übérmensch på høyeste nivå! И я люблю PHP! fi', [],
+                'A-ae-Ubermensch-pa-hoyeste-niva-I-a-lublu-PHP-fi'
+            ],
+            [
                 'Äpfel Über Öl grün ärgert groß öko', [],
                 'Aepfel-Ueber-Oel-gruen-aergert-gross-oeko'
             ],