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

Вступление

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

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

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

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

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

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

<?php // строка $str = 'first letters'; // первая буква в верхний регистр echo ucfirst($str) . '<br>'; // первая буква во всех словах echo ucwords($str); ?>

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

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

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

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

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

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

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

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

<?php /** * проверяем, что функция mb_ucfirst не объявлена * и включено расширение mbstring (Multibyte String Functions) */ 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) . '<br>'; // пробуем кириллицу в юникоде преобразовать функцией ucwords echo ucwords($str) . '<br>'; // обрабатываем объявленной функцией mb_ucfirst() echo mb_ucfirst($str) . '<br>'; // преобразовываем функцией mb_convert_case echo mb_convert_case($str, MB_CASE_TITLE, 'UTF-8'); ?>

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

Категории

ПрограммированиеPHPСтроки в PHPСтроки

Читайте также

Комментарии

Manul_87

111

Ответить
postavshhiki

Благодарю!

Ответить