WebOrbiton
v1.0.0.0

StocketBase

23 lines · 657 B
  1. <?php
  2. ​
  3. declare(strict_types=1);
  4. ​
  5. final class Slugger
  6. {
  7. private const TRANSLITERATION_MAP = [
  8. 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n',
  9. 'ó' => 'o', 'ś' => 's', 'ź' => 'z', 'ż' => 'z',
  10. 'Ą' => 'a', 'Ć' => 'c', 'Ę' => 'e', 'Ł' => 'l', 'Ń' => 'n',
  11. 'Ó' => 'o', 'Ś' => 's', 'Ź' => 'z', 'Ż' => 'z',
  12. ];
  13. ​
  14. public static function make(string $title): string
  15. {
  16. $transliterated = strtr($title, self::TRANSLITERATION_MAP);
  17. $lowercased = strtolower($transliterated);
  18. $slug = preg_replace('/[^a-z0-9]+/', '-', $lowercased);
  19. ​
  20. return trim($slug, '-');
  21. }
  22. }
  23. ​