-2

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

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

  • Пожалуйста, уточните вашу конкретную проблему или приведите более подробную информацию о том, что именно вам нужно. В текущем виде сложно понять, что именно вы спрашиваете. – Дух сообщества Nov 28 '21 at 21:06
  • https://ru.stackoverflow.com/questions/105908/Почему-ucfirst-не-работает-для-русских-символов. Никакие регулярные выражения тут не нужны. Умение гуглить нужно. – sousage1212 Nov 29 '21 at 01:36

4 Answers4

0

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

$data = 'slovo';
echo mb_convert_case($data, MB_CASE_TITLE, "UTF-8");
0

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

$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");
  • так и ваш не верен. в отличие от соседнего он весь остаток строки к нижнему регистру приводит, а об этом не просили. – teran Nov 29 '21 at 06:57
  • @teran - первую букву на любом языке в строке на заглавную, а остальные оставить в нижнем регистре –  Nov 29 '21 at 09:04
  • и действительно, упустил. но думаю высока вероятно, что надо остальное не в нижний регистр перевести, а оставить как есть. – teran Nov 29 '21 at 10:43
0

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

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

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

emrdev
  • 1
0
$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 и ничего не выдавало.

0xdb
  • 51,614
  • 1
    В текущем виде ваш ответ непонятен. Пожалуйста, нажмите [edit] под сообщением, чтобы добавить больше подробностей, которые помогут другим понять, как он отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в Справке. – Дух сообщества Nov 30 '21 at 16:07