
Здравствуйте, уважаемые читатели!
Не секрет, что многие начинающие программисты сталкиваются с вопросом о работе в PHP со строками, закодированными в UTF-8. Сразу оговоримся, что наши добрые знакомые строковые функции substr() и strpos() с юникодом работают некорректно. Некоторые специалисты советуют придумывать разнообразные «обвязки» или устанавливать дополнительные библиотеки, исправляющие данный недостаток.
Таким образом, отныне вы сможете использовать в полной мере всё многообразие функций mb_*, среди которых и mb_strpos(), mb_split() и прочие аналоги старых функций. При этом, стоит указать на одну распространённую ошибку – при использовании описанных функций кодировку обязательно необходимо указывать как последний аргумент.
И напоследок, пример того, как функция ucfirst() будет преобразовывать первый символ строки с помощью mbstring в верхний регистр:
function ucfirst_utf8($str) {
if (mb_check_encoding($str,'UTF-8')) {
$first = mb_substr(
mb_strtoupper($str, "utf-8"),0,1,'utf-8'
);
return $first.mb_substr(
mb_strtolower($str,"utf-8"),1,mb_strlen($str),'utf-8'
);
} else {
return $str;
}
}