Функция strtoupper PHP для строки UTF-8
Я читал комментарии пользователей для функции PHP strtoupper() и, похоже, не существует консенсуса относительно того, как сделать преобразование для строк, отличных от Enlgish. Я имею в виду, что люди предлагают локализованные решения и прочее, но не должно быть единого способа преобразования строки во все верхние (или все нижние) буквы букв?
Итак, мой вопрос, скажем, если у меня есть закодированная строка UTF-8 (в некотором неизвестном локали), как мне преобразовать ее во все верхние/нижние буквы в PHP?
Ответы
Ответ 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)
:)