→ Php сделать первую букву маленькой. Сделать первую букву заглавной (PHP)

Php сделать первую букву маленькой. Сделать первую букву заглавной (PHP)

Достаточно редко, но всё-же возникает такая необходимость, как сделать первую букву заглавной php кирилица.

Это когда первая буква слова становится большой. Применить это можно, например, для унификации написания имени пользователя, или, например, когда нужно автоматически составить текст в предложение.

Как сделать первую букву заглавной php латиница

Тут всё достаточно просто: в PHP есть 2 функции: ucfirst() и ucwords(). Первая делает только первую букву в строке заглавной, вторая делает первую букву каждого слова в строке заглавной.

// строка $str = "first letters"; // первая буква в верхний регистр echo ucfirst($str) . "


First letters
и
First Letters

Видим разницу. С английскими текстами (или любыми другими), написанными латиницей проблем не будет.

Как сделать первую букву заглавной php кирилица Windows-1251 (CP-1251)

С кирилицей (русскими буквами) которые записаны в кодировки Windows-1251 тоже не будет больших проблем:

// строка $str = "первые буквы"; // первая буква в верхний регистр echo ucfirst($str) . "
"; // первая буква во всех словах echo ucwords($str);

В результате получим две строки:
Первые буквы
и
Первые Буквы

Как сделать первую букву заглавной php кирилица UTF-8

Но как только дело доходит до UTF-8 начинаются проблемы, потому, что кирилица в UTF-8 занимает 2 байта, и поэтому ничего не получится. Для этого будем использовать «костыль» от Multibyte String Functions. Если этот плагин установлен на PHP, то можно просто использовать 2 аналогичные функции: mb_ucfirst и mb_convert_case.

А если их нет, то нужно дополнить код своими альтернативами:

If (!function_exists("mb_ucfirst") && extension_loaded("mbstring")) { /** * mb_ucfirst - преобразует первый символ в верхний регистр * @param string $str - строка * @param string $encoding - кодировка, по-умолчанию UTF-8 * @return string */ function mb_ucfirst($str, $encoding="UTF-8") { $str = mb_ereg_replace("^[\ ]+", "", $str); $str = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding). mb_substr($str, 1, mb_strlen($str), $encoding); return $str; } } $str = "первые буквы"; // пробуем кириллицу в юникоде преобразовать функцией ucfirst echo ucfirst($str) . "
"; // пробуем кириллицу в юникоде преобразовать функцией ucwords echo ucwords($str) . "
"; // обрабатываем объявленной функцией mb_ucfirst() echo mb_ucfirst($str) . "
"; // преобразовываем функцией mb_convert_case echo mb_convert_case($str, MB_CASE_TITLE, "UTF-8");

Результатом этому коду станут такие строчки.

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

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

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

Test string Test String

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

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

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

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

 

 

Это интересно: