PDA

Просмотр полной версии : strtolower() портит текст


elezeo
04.10.2011, 19:04
в расширении имеется строка вида
ucfirst(strtolower($this->pi_getLL('label_xxxxx')))
Хитро канечно придумано, но не мною!
Так вот. После такой обработки текста из языкового файла выводится на экран крякозяброй.
Без обработки конечно же нормально.
Как решить сея проблему? Может есть тайповская функция для работы с utf8 текстами? Или дополнение какое-нибудь.
Понятно, что на выходе этой функции замененные сисволы уже в другой кодировке.

dmartynenko
04.10.2011, 22:34
Посмотрите на аналогичные PHP функции mb_* (из библиотеки mbstring).

ucfirst и strtolower работают только с однобайтовыми кодировками.

elezeo
04.10.2011, 23:29
Это повод создания таких функций как:
t3lib_div::strtolower(), t3lib_div::strtoupper(), t3lib_div::ucfirst() и t3lib_div::lcfirst()
Тока кто бы этим занялся :)

dmartynenko
05.10.2011, 12:06
Напишите в баг трекер пожелание.

Но задача специфическая, скорее используемая для FE. В ядре и BE нигде не припомню что где-то операции с регистром символов делаются.

jettero
09.10.2011, 06:24
Это повод создания таких функций как:
t3lib_div::strtolower(), t3lib_div::strtoupper(), t3lib_div::ucfirst() и t3lib_div::lcfirst()
Тока кто бы этим занялся :)

t3lib_div::strtolower() и t3lib_div::strtoupper() уже есть, но конвертируют только латинские символы, вы можете открыть тикет в баг трекере, чтобы их сделали мультибайтными или можете сами сделать патч и отправить на одобрение.