• Как сделать первую букву заглавной 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]), которая будет обрабатывать символы Юникода.