Первая буква заглавная

Преобразование первых букв в заглавные(верхний регистр) — PHP

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

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

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

<?php $test_sting = «test string»; //первый символ строки в верхний регистр echo ucfirst($str); echo «<br/>»; //преобразует в верхний регистр первый символ каждого слова в строке echo ucwords($str); ?>

Вывод:

Test string Test String

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

<?php $test_sting = «тестовая строка»; //первый символ строки в верхний регистр echo ucfirst($str); echo «<br/>»; //преобразует в верхний регистр первый символ каждого слова в строке echo ucwords($str); ?>

Вывод:

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

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

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

<?php if (!function_exists(‘mb_ucfirst’) && extension_loaded(‘mbstring’)) { /** * mb_ucfirst — Make a string’s first character uppercase * @param string $str — The input string. * @param string $encoding — string $encoding &mbstring.encoding.parameter; default UTF-8 * @return string str with first alphabetic character converted to uppercase. */ 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; } } ?> Для преобразует в верхний регистр первый символ каждого слова в строке достаточно использовать mb_convert_case в режиме MB_CASE_TITLE. <?php if (!function_exists(‘mb_ucwords’) && extension_loaded(‘mbstring’)) { /** * mb_ucwords — Uppercase the first character of each word in a string * @param string $str — The input string. * @param string $encoding — string $encoding &mbstring.encoding.parameter; default UTF-8 * @return string str with uppercase the first character of each word */ function mb_ucwords($str, $encoding=’UTF-8′) { return mb_convert_case($str, MB_CASE_TITLE, ;encoding);; } } ?>

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

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