transliterator_transliterate
funkcja
Konwertuje ciąg znaków według reguły transliteracji ICU (np. 'Latin-ASCII' usuwa akcenty: 'Łódź' → 'Lodz'). Wymaga rozszerzenia intl.
transliterator_transliterate(Transliterator|string $transliterator, string $string, int $start = 0, int $end = -1): string|false
transliterator_transliterate stosuje regułę transliteracji ICU do podanego ciągu znaków. Najczęstsze zastosowania to usuwanie polskich liter diakrytycznych na potrzeby slugów URL oraz konwersja cyrylicy lub innych pism na litery łacińskie.
Reguły można łączyć średnikami: 'Any-Latin; Latin-ASCII' najpierw konwertuje dowolny skrypt na litera łacińskie, a następnie usuwa znaki diakrytyczne.
Funkcja wymaga rozszerzenia intl.
<?php
declare(strict_types=1);
// Usunięcie polskich znaków diakrytycznych (łacina → ASCII)
echo transliterator_transliterate('Latin-ASCII', 'Łódź'); // Lodz
echo transliterator_transliterate('Latin-ASCII', 'Zażółć'); // Zazolc
// Konwersja cyrylicy na litery łacińskie + usunięcie akcentów
echo transliterator_transliterate('Any-Latin; Latin-ASCII', 'Привет'); // Privet
// Praktyczne użycie: generowanie slug URL
function slugify(string $text): string
{
$ascii = transliterator_transliterate('Any-Latin; Latin-ASCII', $text);
$slug = strtolower(preg_replace('/[^a-z0-9]+/i', '-', $ascii));
return trim($slug, '-');
}
echo slugify('Łódź — miasto włókiennicze'); // lodz-miasto-wlokiennicze