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

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

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

3 ответа

Решение

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

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

PHP.net заявляет:

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

Вы пробовали это? Я не лингвист, но я бы не предположил, что все языки разделены прописными и строчными буквами.

Использование mb_strtoupper($text) вместо strtoupper($text):)

Другие вопросы по тегам