Функция ucfirst() и кирилица в кодировке UTF-8

Версия php 5.2.8.

Для работоспособности приведённого способа надо собрать php с поддержкой Multibyte String (флаг nls в Gentoo, параметр –enable-mbstring при ручной сборке). А дальше заменяем функцию ucfirst на следующую конструкцию:

$string = mb_strtoupper(mb_substr($string, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($string, 1, mb_strlen($string), 'UTF-8');

Источник: Функция ucfirst в PHP и кирилица в кодировке UTF-8