Замена первой буквы в строке на заглавную

Нужно заменить первую букву на любом языке в строке на заглавную, а остальные оставить в нижнем регистре, перепробовал уже всё, что мог и понимаю, что только через регулярные выражения возможно выполнить это.

Что бы я не делал, вылетает ошибка или выводится пустая строка.


Ответы (4 шт):

Автор решения: Александр Ена

Если я правильно понял то вот один из вариантов:

$data = 'slovo';
echo mb_convert_case($data, MB_CASE_TITLE, "UTF-8");
→ Ссылка
Автор решения: phpBear

Предыдущий вариант не совсем верен. Он переводит в верхний регистр первую букву КАЖДОГО слова в строке. А по условиям задачи нужно только первую букву в строке.

$str = 'Ваша строка на любом языке';
echo mb_convert_case(mb_substr($str, 0, 1), MB_CASE_UPPER, "UTF-8").mb_convert_case(mb_substr($str, 1, mb_strlen($str) -1 ), MB_CASE_LOWER, "UTF-8");
→ Ссылка
Автор решения: emrdev

А что не так с функцией ucfirst? Работает начиная с 4 версии.

<?php
$foo = 'hello world!';
$foo = ucfirst($foo); // Hello world!

Ссылка на официальную документацию: https://www.php.net/manual/ru/function.ucfirst.php

→ Ссылка
Автор решения: dshvnbln
$str = 'Ваша строка на любом языке';
echo mb_convert_case(mb_substr($str, 0, 1), MB_CASE_UPPER, "UTF-8").mb_convert_case(mb_substr($str, 1, mb_strlen($str) -1 ), MB_CASE_LOWER, "UTF-8");

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

→ Ссылка