Подтвердить что ты не робот

Функция strtoupper PHP для строки UTF-8

Я читал комментарии пользователей для функции PHP strtoupper() и, похоже, не существует консенсуса относительно того, как сделать преобразование для строк, отличных от Enlgish. Я имею в виду, что люди предлагают локализованные решения и прочее, но не должно быть единого способа преобразования строки во все верхние (или все нижние) буквы букв?

Итак, мой вопрос, скажем, если у меня есть закодированная строка UTF-8 (в некотором неизвестном локали), как мне преобразовать ее во все верхние/нижние буквы в PHP?

4b9b3361

Ответ 1

Вы хотите использовать mb_strtoupper.

$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_strtoupper($str, "UTF-8");
echo $str; // Prints ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ

PHP.net:

В отличие от стандартного случая сгибающие функции, такие как strtolower() и strtoupper(), свертывание корпуса выполненный на основе Unicode свойства символа. Таким образом поведение этой функции не зависит от настроек языка и может конвертировать любые символы, имеющие "буквенное" свойство, такое как A-умлаут (Ä).

Ответ 2

Вы пробовали это? Я не лингвист, но я бы не стал предполагать, что все языки имеют более низкий/верхний регистр.

Ответ 3

используйте mb_strtoupper($text) вместо strtoupper($text) :)