Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


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

Вступление

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

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
<?php

// строка
$str 'first letters';

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

// первая буква во всех словах
echo ucwords($str);

?>

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
<?php

// строка
$str 'первые буквы';

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

// первая буква во всех словах
echo ucwords($str);

?>

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?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($str01$encoding), $encoding).
               
mb_substr($str1mb_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($strMB_CASE_TITLE'UTF-8');

?>

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

Опубликовано: 12 апреля 2011  ·  Автор: Артём Фёдоров  ·  43984 просмотра

Категория

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

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

111
Manul_87 · 1 год назад
Благодарю!
· 2 года назад
Строки, PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания