Решение: как сделать первую букву заглавной в UTF-8

В PHP есть функция ucfirst() для капитализации первого слова строки (делает первую букву заглавной). Но она не работает с многобайтными строками (например, в кодировке UTF-8). Есть функции работы с многобайтными строками, названия которых начинаются с mb_ (multi byte). Но среди них нет функции mb_ucfirst(), которую мы сейчас напишем.

Нам понадобится функция mb_strtoupper() (делает все буквы строки заглавными) и mb_substr() (возвращает часть строки). Эти функции в PHP уже есть — если установлено расширение PHP mbstring (почти всегда установлено). Если же нет, наша функция вернёт исходную строку без изменений.

Принцип прост. Возьмём от строки первую букву, сделаем её заглавной и присоединим к ней остальную часть строки:

# Делает первую букву строки заглавной (капитализация первого слова)
if ( ! function_exists( 'mb_ucfirst' ) ) {
    function mb_ucfirst( $s, $e = 'UTF-8' ) {
		if ( ! function_exists( 'mb_substr' ) )
			return $s;
		$first = mb_substr( $s, 0, 1, $e );
		$second = mb_substr( $s, 1, mb_strlen( $s, $e ) -1, $e );
		return mb_strtoupper( $first, $e ) . $second;
    }
}

Достаточно добавить этот PHP-код в ваш скрипт, и вы сможете использовать функцию echo mb_ucfirst( 'например, так' ) — в результате выведется текст «Например, так». Даже если когда-нибудь в PHP добавят функцию «mb_ucfirst», ошибки не будет, потому что мы объявляем нашу функцию только при наличии её отсутствия. :)

Если не указана кодировка, по умолчанию имеется ввиду UTF-8. Вы можете использовать функцию с явным указанием кодировки, если она у вас отлична от UTF-8: mb_ucfirst( 'строка', 'KOI8-R' )

Запись опубликована в рубрике Web-мастеринг с метками . Короткая ссылка для добавления в закладки: Решение: как сделать первую букву заглавной в UTF-8.

8 Responses

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Иногда ваш комментарий может не отобразиться сразу после публикации - будто пропал. Не волнуйтесь, он не пропадёт и появится потом, после моего одобрения.