Инструменты пользователя

Инструменты сайта


dev:php:funkcija_ucfirst_i_kirilica_v_kodirovke_utf-8

Функция ucfirst() и кирилица в кодировке UTF-8

Версия php 5.2.8.

Для работоспособности приведённого способа надо собрать php с поддержкой Multibyte String (флаг nls в Gentoo, параметр –enable-mbstring при ручной сборке). А дальше заменяем функцию ucfirst на следующую конструкцию:

$string = mb_strtoupper(mb_substr($string, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($string, 1, mb_strlen($string), 'UTF-8');

Источник: Функция ucfirst в PHP и кирилица в кодировке UTF-8

Дискуссия

Анвар, 22.06.2010 17:16

Есть более простой способ получения первой заглавной буквы для данного решения:

$string = mb_convert_case($string, MB_CASE_TITLE);

Прохожий, 04.01.2011 19:04

Да, ну? Тестируйте, прежде чем писать.

Makedon, 27.08.2011 01:59

Прямой путь всегда лучше велосипедного, Анвар просто забыл уточнить кодировку mb_convert_case($string, MB_CASE_TITLE, 'UTF-8');

Blake-R, 28.08.2011 10:08

Не совсем это правильный путь, поскольку будут изменяться регистры сразу всех слов в $string:

mb_convert_case('привет, мир') → 'Привет, Мир'.

Это зачастую далеко не совсем то, что надо. А для замены только первой буквы первого слова этот путь избыточен.

Эльхан Исаев, 30.04.2012 14:55
function mb_ucfirst ($word)
{
return mb_strtoupper(mb_substr($word, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr(mb_convert_case($word, MB_CASE_LOWER, 'UTF-8'), 1, mb_strlen($word), 'UTF-8');
}

вот так самое верное, написал для вас)

MCStan, 29.05.2012 17:07

Эльхан Исаев - respect!!!

xaocbozzz, 27.09.2012 12:53

Решение, которое предложил Эльхан Исаев делает насильно первую букву в предложении заглавной. Это так. Только вот и все остальные быквы также насильно становяться маленькими. А если у меня в середине слова аббривиатура?

$txt = 'привет! Я из НАТО - убейте меня!';

$txt = mb_strtoupper(mb_substr($txt, 0, 1, 'UTF-8'), 'UTF-8') . mb_substr($txt, 1, mb_strlen($txt), 'UTF-8');

echo $txt;

результат: Привет! Я из НАТО - убейте меня!

Эльхан Исаев, 02.10.2012 20:20

Логически верно, но вернее соединить в одну функцию, можно будет насильственно и нет)

Enter your comment
 
dev/php/funkcija_ucfirst_i_kirilica_v_kodirovke_utf-8.txt · Последние изменения: 28.08.2011 10:06 (внешнее изменение)

Инструменты страницы