Преобразование первых букв в заглавные(верхний регистр) - PHP. Как сделать первую букву заглавной на PHP Php первая буква маленькая

Системные

В PHP есть функция ucfirst() , которая первую букву в строке делает заглавной, ucwords() - делает заглавными буквы во всех словах строки, в работе с кириллицей, в юникоде, возникают проблемы.

Кириллица и юникод — вечная проблема всех версий PHP, частично проблема решена, существует функция string mb_convert_case (string str, int mode [, string encoding]) , которая принимает в качестве параметров строку, режим преобразования (0 — все буквы в верхний регистр, 1 — все буквы в нижний регистр, 2 — ВСЕ ПЕРВЫЕ буквы всех слов в верхний регистр) и кодировка.

Преобразование букв

Задача: преобразовать первую букву в строке и все первые буквы во всех словах в строке.

Английские буквы

С английскими буквами в стандартно-используемых кодировках (UTF-8 и Windows-1251) проблем не возникает.

Результат на экране
First letters
First Letters

Кириллица и Windows-1251

С кириллицей в Windows-1251 проблем так же не должно возникнуть.

Результат на экране
Первые буквы
Первые Буквы

Кириллица и UTF-8

С кириллицей в юникоде функции ucfirst() и ucwords() не справятся и преобразований не произойдет.

Для этого определяется функция mb_ucfirst(string str [, string encoding]) , которая будет обрабатывать юникод-строки.

Результат на экране
первые буквы
первые буквы
Первые буквы
Первые Буквы

PHP хорош многообразием нативных функций языка. Однако, в некоторых случаях приходится дописывать недостающий функционал. Особенно это заметно при работе с функциями преобразования строк и различными кодировками.

Например, ucfirst - функция, которая преобразовывает первый символ строки в верхний регистр. Казалось бы, не должно возникнуть никаких проблем, но при работе с кириллицей такого преобразования не происходит. Это касается и функции ucwords - преобразует в верхний регистр первый символ каждого слова в строке.

С символами анг.алфавита проблем не возникает:

Test string Test String

Но с кириллицей возникают проблемы:

Тестовая строка тестовая строка

Для PHP типичны случаи, когда функции "плохо" или вообще не работают с кириллицей. Некоторые функции с приставкой mb решают проблемы с кириллицей. Например, mb_strtolower - приведение строки к нижнему регистру. В отличие от strtolower(), то что символ является буквой определяется на основании свойств символа Юникода.

Для решения проблемы определим функцию mb_ucfirst(string str [, string encoding]), которая будет обрабатывать символы Юникода.