From: Raphaƫl Gertz <git@rapsys.eu>
Date: Sun, 29 Nov 2020 07:34:11 +0000 (+0100)
Subject: Use ICU Transliterator transliterate feature when available
X-Git-Tag: 0.1.3~2
X-Git-Url: https://git.rapsys.eu/userbundle/commitdiff_plain/e63d9bc97a04027f2bf6b53341d47537eb261c1b

Use ICU Transliterator transliterate feature when available
---

diff --git a/Utils/Slugger.php b/Utils/Slugger.php
index b3f18e2..9a33e6d 100644
--- a/Utils/Slugger.php
+++ b/Utils/Slugger.php
@@ -104,6 +104,11 @@ class Slugger {
 
 	//Convert string to safe slug
 	function slug(string $string): string {
+		//Use Transliterator if available
+		if (class_exists('Transliterator')) {
+			$trans = Transliterator::create('Any-Latin; Latin-ASCII; Lower()');
+			return preg_replace(['/[^a-zA-Z0-9\.]+/', '/(^-+|-+$)/', '/\.[^\.]+$/'], ['-', '', ''], $trans->transliterate($string));
+		}
 		return preg_replace('/[\/_|+ -]+/', '-', strtolower(trim(preg_replace('/[^a-zA-Z0-9\/_|+ -]/', '', str_replace(['\'', '"'], ' ', iconv('UTF-8', 'ASCII//TRANSLIT', $string))), '-')));
 	}
 }