Как-то разрабатывая очередной WordPress плагин, мне понадобился аналог PHP функции ucfirst, только в mb_* интерпретации (т. е. для много байтовых строк). Зайдя на php нет, я был озадачен, такой функции нет. Прошерстив интернет, на stackoverflow было найдено одно (а может и два) решения.
Доработав найденный код, получился следующий результат:
public function mb_ucfirst($string, $encoding = 'UTF-8') { $strlen = mb_strlen($string, $encoding); $first_char = mb_substr($string, 0, 1, $encoding); $then = mb_substr($string, 1, $strlen - 1, $encoding); return mb_strtoupper($first_char, $encoding) . mb_strtolower($then, $encoding); }
Где:
$strlen — общая длина строки с учетом кодировки (второй параметр нашей ф-и)
$first_char — первый символ строки
$then — все остальные символы (т. е. кроме первого)
И завершается все оператором return с преобразованием первого символа в верхний регистр, а всех остальных в нижний, с учетом кодировки разумеется.