Функция 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)
:)