- preg_replace_callback: documentation ( source)
<?php declare(strict_types=1);
// https://stackoverflow.com/a/68330595/367456
$transliterator = Transliterator::create("Any-Latin; Latin-ASCII");
$str = "AŠAàèìòù Chén Hǎi yáo München Faißt Финиш 国内 - 镜像";
echo $transliterator->transliterate($str), "\n";
$transliterate = static function (array $match) use ($transliterator) {
return $transliterator->transliterate($match[0]);
};
echo preg_replace_callback('([^\xE0\xE8\xEC\xF2\xF9]+)u', $transliterate, Normalizer::normalize($str, Normalizer::NFC)), "\n";