Как сделать последнюю букву заглавной UTF-8

158
09 декабря 2018, 08:30
$word = "слово";

как сделать:

$word = "словО";
Answer 1

Для многобайтовых строк, таких как UTF-8 сущестуют специальные функции:

$enc = 'UTF-8';
$word = "слово";
$count = mb_strlen($word, $enc); //Узнаем количество символов в MB строке
$new_word = mb_substr($word, 0, ($count - 1), $enc);
$new_word = $new_word . mb_strtoupper(mb_substr($word,($count - 1), 1, $enc), $enc);
echo $new_word;

Результат будет: словО.

Функции с приставкой mb_ учитывают что символы могут быть разного размера. Например:

$str = 'FФ'; //Первый символ латиницей, второй кириллицей
$size = strlen($str);
//Для строки в UTF-8 вернет 3
$size = mb_strlen($str);
//Для строки в UTF-8 вернет 2

Это источник многих ошибок для начинающего программиста.

Answer 2
$str = "привет мир";  
$last = strlen($str)-1;
list($str[$last-1], $str[$last]) = mb_strtoupper($str[$last-1].$str[$last], 'UTF8');  
echo $str;
READ ALSO
Как сделать logout в backend

Как сделать logout в backend

Пишу код приложения на yii2-advanced, решил сделать авторизацию и выход из учетной записи для админа в backend через контроллер в frontend

160
laravel очереди

laravel очереди

Вопрос, как в Laravel не дублировать очередь? Те

143
Как проверить строку на корректность

Как проверить строку на корректность

В С# есть функция IsNullOrWhiteSpace(), которая проверяет, является ли строка пустой или с одними пробеламиВопрос, как в php проверить, является ли введённая...

165