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

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

  • автор:

Сделать первую букву заглавной (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 оценок
69189 просмотров 3 комментария Артём Фёдоров 12 апреля 2011

Категории

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

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

Комментарии

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

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

lcfirst

Возвращает строку string , первый символ которой был преобразован в нижний регистр, если этот символ является ASCII-символом в диапазоне от «A» (0x41) до «Z» (0x5a).

Список параметров

Возвращаемые значения

Возвращает результирующую строку.

Список изменений

Версия Описание
8.2.0 Преобразование регистра больше не зависит от локали, установленной с помощью функции setlocale() . Будут преобразованы только символы ASCII.

Примеры

Пример #1 Пример использования lcfirst()

$foo = ‘HelloWorld’ ;
$foo = lcfirst ( $foo ); // helloWorld

$bar = ‘HELLO WORLD!’ ;
$bar = lcfirst ( $bar ); // hELLO WORLD!
$bar = lcfirst ( strtoupper ( $bar )); // hELLO WORLD!
?>

Смотрите также

  • ucfirst() — Преобразовывает первый символ строки в верхний регистр
  • strtolower() — Преобразовывает строку в нижний регистр
  • strtoupper() — Преобразовывает строку в верхний регистр
  • ucwords() — Преобразовывает в верхний регистр первый символ каждого слова в строке

User Contributed Notes 4 notes

14 years ago

Easiest work-around I’ve found for <5.3:

$string = «CamelCase»
$string < 0 >= strtolower ( $string < 0 >)
echo $string ; // outputs camelCase

15 years ago

In some cases maybe more useful?

$lower = strtolower( substr($upper,0,1) ) . substr($upper,1);

15 years ago

A slight modification from Northie’s post here ( http://us2.php.net/manual/en/function.ucfirst.php#68443), where lcfirst may not exist in your PHP build:

if( false === function_exists ( ‘lcfirst’ ))
/**
* Make a string’s first character lowercase
*
* @param string $str
* @return string the resulting string.
*/
function lcfirst ( $str ) $str [ 0 ] = strtolower ( $str [ 0 ]);
return (string) $str ;
>
>

/* Tests */
echo var_dump ( lcFirst ( NULL )). ‘
‘ ; /* string(0) «» */
echo var_dump ( lcFirst ( » )) . ‘
‘ ; /* string(0) «» */
echo var_dump ( lcFirst ( ‘S’ )) . ‘
‘ ; /* string(1) «S» */
echo var_dump ( lcFirst ( ‘É’ )) . ‘
‘ ; /* string(0) «�» */
echo var_dump ( lcFirst ( ‘Hello World. ‘ )); /* string(14) «hello World. » */

15 years ago

As of PHP release 6 direct reference modification is not permitted any more.
Reference modification is the process of manipulating characters within a string by means of the instruction such as:
$str[0] in the code line: $str[0] = strtolower($str[0]);

For this reason I have recoded the lcfirst function (on function_exists(‘lcfirst’) === false) as follows:

if ( false === function_exists ( ‘lcfirst’ ) ):
function lcfirst ( $str )
< return (string)( strtolower ( substr ( $str , 0 , 1 )). substr ( $str , 1 ));>
endif;
?>

Remarks:
Also notice that I have used the more modern scope delimeters (if:-endif;) and I have also removed the unnecessary intermediate result. That is, the manipulation is returned directly.

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

Регистр первой буквы на UTF8

Я пользуюсь ucfirst. Товарищ ROOT дал ссылку на документацию.

Отслеживать
ответ дан 20 янв 2012 в 8:00
1,444 2 2 золотых знака 22 22 серебряных знака 49 49 бронзовых знаков

ucfirst не работает с русским UTF mb_convert_case — умеет делать заглавными все слова с тексте, а вот только первую ну никак не победить, можно конечно выдернуть кусок, его поднять в регистре и посадить обратно, но я хочу по простому, а не просто решить проблему.

20 янв 2012 в 8:35

Упс, извини, плохо прочитал вопрос. Тебе нужно именно первую букву в строке, или каждое слово в строке?

Работа с регистром строк в 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); //у ЛУКомОРЬЯ дУБ ЗЕЛЁНЫЙ. 

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

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

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