Как сделать заглавным первый символ php
Перейти к содержимому

Как сделать заглавным первый символ php

  • автор:

Первый первый символ с заглавной, остальные в нижний регистр

Давно писал, с русским алфавитом и англ работает на ура. Но что, если это арабский, как заставить работать с арабским и другими языками. Функция для того, чтобы привести первый символ к верхнему регистру, остальные к нижнему. Я так понимаю удаляет в регулярке Как ее привести так, чтобы не удаляла буквы, толком не помню что находим и удаляем.

'~[^\s\d/A-Z_a-zЁА-яё-]+~ui' - не помню '# +#i' - если не ошибаюсь, находим один и более пробелы подряд '#^(?:\h*\R)+|\s+$#is' - не помню 

Отслеживать
задан 28 мая 2022 в 11:09
Дмитрий Варзанов Дмитрий Варзанов
327 2 2 серебряных знака 14 14 бронзовых знаков
Так не работает? strtolower($string); ucfirst($string);
28 мая 2022 в 17:09
А так — 3v4l.org/Fg6kO — работает как надо?
31 мая 2022 в 13:53

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • php
  • регулярные-выражения
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372

Сделать первую букву заглавной (PHP)

В PHP есть функция ucfirst() , которая первую букву в строке делает заглавной, ucwords() — делает заглавными буквы во всех словах строки, в работе с кириллицей, в юникоде, возникают проблемы.

Кириллица и юникод — вечная проблема всех версий PHP, частично проблема решена, существует функция string mb_convert_case (string str, int mode [, string encoding]) , которая принимает в качестве параметров строку, режим преобразования (0 — все буквы в верхний регистр, 1 — все буквы в нижний регистр, 2 — ВСЕ ПЕРВЫЕ буквы всех слов в верхний регистр) и кодировка.

Преобразование букв

Задача: преобразовать первую букву в строке и все первые буквы во всех словах в строке.

Английские буквы

С английскими буквами в стандартно-используемых кодировках (UTF-8 и Windows-1251) проблем не возникает.

‘; // первая буква во всех словах echo ucwords($str); ?>

Результат на экране
First letters
First Letters

Кириллица и Windows-1251

С кириллицей в Windows-1251 проблем так же не должно возникнуть.

‘; // первая буква во всех словах echo ucwords($str); ?>

Результат на экране
Первые буквы
Первые Буквы

Кириллица и UTF-8

С кириллицей в юникоде функции ucfirst() и ucwords() не справятся и преобразований не произойдет.

Для этого определяется функция mb_ucfirst(string str [, string encoding]) , которая будет обрабатывать юникод-строки.

Результат на экране
первые буквы
первые буквы
Первые буквы
Первые Буквы

✖ ❤ Мне помогла статья 12 оценок
69624 просмотра 3 комментария Артём Фёдоров 12 апреля 2011

Категории

Читайте также

  • Сделать первую букву заглавной (Perl)
  • Первую букву в верхний регистр (JavaScript)
  • Как инвертировать строку (PHP)
  • Как узнать длину строки (PHP)
  • Транслит (PHP)
  • Определить поискового бота (PHP)
  • Удалить все теги (PHP)
  • Строку в верхний регистр (PHP)
  • Строку в нижний регистр (PHP)
  • Удалить все пробелы (PHP)
  • Удалить двойные пробелы (PHP)
  • Первые N символов строки цифры (PHP)

Комментарии

06 октября 2021 в 07:51

Перед тем как подобные статьи писать, разберись сам в функциях. Ничего о не меняет, как были слова так и остались

Работа с регистром строк в php

Функции strtolower($string), mb_strtolower($string) — приводят строки к нижнему регистру. Для UTF-8 так же используется функция с премифксом mb_.

 $str = 'CтроКа Для проАерки'; echo mb_strtolower($str); // cтрока для проаерки

Заглавная буква в каждом слове

Если вам нужно вывести расшифровку аббревиатуры какой-нибудь организации, а у вас есть строка в нижнем регистре, воспользуйтесь функцией ucwords() . Она сделает в строке каждое слово с заглавной буквы.

 $str = 'National hockey league'; echo 'NHL is ' . ucwords($str); //NHL is National Hockey League

Для работы с кириллицей потребуется так же пользовательский аналог.

 if(!function_exists('mb_ucwords')) < function mb_ucwords($str) < $str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8"); return ($str); >> $str = 'федеральная служба безопасности'; echo 'ФСБ можно расшифровать как «' . mb_ucwords($str) . '»'; //ФСБ можно расшифровать как «Федеральная Служба Безопасности» 

Инверсия регистра строки

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

 function mb_inversion_case($str) < //Разбиваем строку посимвольно в массив $characters = preg_split('/(?$char) < if (mb_strtolower($char, 'UTF-8') != $char) < $char = mb_strtolower($char, 'UTF-8'); >else < $char = mb_strtoupper($char, 'UTF-8'); >//Кладём преобразованный символ в массив по тому же индексу $characters[$key] = $char; > //Собираем строку обратно и вовзращаем return implode('', $characters); > $str = 'У лукОМорья Дуб зелёный.'; echo mb_inversion_case($str); //у ЛУКомОРЬЯ дУБ ЗЕЛЁНЫЙ. 

Удачи в работе со строками!

Как сделать что бы первое слово в строчке было заглавное буквы?

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

Можете поделиться PHP скриптом или ткнуть на онлайн сервис

ps Можно выложить готовый скрипт, что бы я запустил а он все поменял, я не прогер
Грубо говоря, скрипт + фаил с ключами. запустил скрипт , все ключевики начинаются с заглавной буквы

  • Вопрос задан более трёх лет назад
  • 1009 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 6
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Дмитрий Ковальский @dmitryKovalskiy
программист средней руки
А банальное source[0] to UpperCase не работает?
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

$keys = "Ключ1, Ключ2, Ключ3, Ключ4"; $keys = strtolower($keys); $keys[0] = strtoupper($keys[0]); echo $keys;

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

$keys = "Ключ1, Ключ2, Ключ3, Ключ4"; echo ucfirst(strtolower($keys));

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Как верно заметил Arik , нужно использовать мультибайтовые функции, если текст будет в кириллице. То есть ucfirst не подходит. А mb_ucfirst в php пока не входит. Поэтому так:

/** * Мультибайтовый аналог ucfirst * @param string Строка в мультибайтовой кодировке * @return string Строка с первым символом, переведенным в верхний регистр */ if (!function_exists('mb_ucfirst') && function_exists('mb_substr')) < function mb_ucfirst($string) < $string = mb_strtoupper(mb_substr($string, 0, 1)) . mb_substr($string, 1); return $string; >>

Ответ написан более трёх лет назад

а зачем проверять function_exists(‘mb_substr’)? =) если не будет модуля mb_* то и так ниже все ляжет в fatal error, вызов то будет mb_ucfirst(), а функции не будет

Arik: да, в общем-то, незачем, вы правы. Функция скопипащена из комментариев на PHP.net.
Ваш ответ на вопрос

Войдите, чтобы написать ответ

php

  • PHP
  • +1 ещё

Как настроить карусель в WordPress при добавлении нового типа поста с классами Bootstrap (active)?

  • 1 подписчик
  • вчера
  • 22 просмотра

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

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