Php символы заглавными буквами

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

Не пропусти свежие посты, подпишись:

В php есть набор функций позволяющих проверять или как-то влиять на регистр строки. Давайте рассмотрим их подробнее.

Проверка регистра строки

 $str = 'Test string'; if(ctype_upper(mb_substr($str, 0, 1)))< echo 'Первая буква строки «' . $str . '» заглавная'; > else < echo 'Первая буква строки ' . $str . ' прописная'; > 
 Первая буква строки «Test string» заглавная 

С кириллицей тут есть засада, mb_substr() хотя и возвращает корректный символ, но его почему-то не распознаёт ctype_upper() как заглавную буку. Поэтому можно реализовать такую проверку:

 $str = 'Строка для проверки'; $firstLetter = mb_substr($str, 0, 1); if(mb_strtolower($firstLetter) != $firstLetter)< echo 'Первая буква строки «' . $str . '» заглавная'; > else < echo 'Первая буква строки ' . $str . ' прописная'; > 
 Первая буква строки строка для проверки прописная 

Первая заглавная буква

Функция ucfirst($str) преобразует первый символ строки $str в заглавный. Для кириллических строк следует использовать пользовательскую функцию mb_ucfits() , пример:

 //Проверяем что такуй функции нет if(!function_exists('mb_ucfirst')) < //Добавляем функцию function mb_ucfirst($str) < //Преобразуем первый символ $fc = mb_strtoupper(mb_substr($str, 0, 1)); //Возвращаетм строку return $fc . mb_substr($str, 1); >> $str = 'cтрока для проверки'; echo mb_ucfirst($str); // 'Строка для проверки 

Первая строчная буква

Функция lcfirst($str) приводит первый символ строки $str к нижнему регистру. Для работы с UTF-8 (кириллицей), нужна своя функция:

 //Проверяем что такуй функции нет if(!function_exists('mb_lcfirst')) < function mb_lcfirst($str) < $fc = mb_strtolower(mb_substr($str, 0, 1)); return $fc . mb_substr($str, 1); >> $str = 'Cтрока для проверки'; echo mb_ucfirst($str); // 'cтрока для проверки 

Все заглавные буквы

Функции strtoupper($string), mb_strtoupper($string) — преобразует строку в верхний регистр. Префикс mb_ для кириллицы (UTF-8).

 $str = 'Cтрока для проверки'; echo mb_strtoupper($str); // CТРОКА ДЛЯ ПРОВЕРКИ

Все строчные буквы

Функции 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

Список PHP-функций для изменения регистра символов в строках и примеры их использования.

Проверка, является ли буква прописной или строчной

Функция ctype_upper($string) – определяет, являются ли все буквы в строке в верхнем регистре.

$str = 'Ы'; if (ctype_upper($str)) < echo 'Заглавная'; >else

Вариант для кириллицы в кодировке UTF-8:

$str = 'Ы'; if (mb_strtolower($str) !== $str) < echo 'Заглавная'; >else < echo 'строчная'; >// Выведется «Заглавная»

Пример определения регистра для первой буквы в строке:

$text = 'Привет мир!'; $chr = mb_substr($text, 0, 1); if (mb_strtolower($chr) !== $chr) < echo 'Заглавная'; >else < echo 'строчная'; >// Выведется «Заглавная»

Первая заглавная буква

ucfirst($string) — преобразует первый символ строки в верхний регистр.

$text = 'привет Мир!'; echo ucfirst($text); 

Для UTF-8:

if(!function_exists('mb_ucfirst')) < function mb_ucfirst($str) < $fc = mb_strtoupper(mb_substr($str, 0, 1)); return $fc . mb_substr($str, 1); >> $text = 'привет Мир!'; echo mb_ucfirst($text); // Привет Мир!

Первая строчная

ucfirst($string) — преобразует первый символ строки в верхний регистр.

$text = 'Привет Мир!'; echo lcfirst($text); 

Для UTF-8:

if(!function_exists('mb_lcfirst')) < function mb_lcfirst($str) < $fc = mb_strtolower(mb_substr($str, 0, 1)); return $fc . mb_substr($str, 1); >> $text = 'Привет Мир!'; echo mb_lcfirst($text); // привет Мир!

Все заглавные буквы

Для UTF-8:

$text = 'привет Мир!'; echo mb_strtoupper($text); // ПРИВЕТ МИР!

Все строчные буквы

$text = 'Привет Мир!'; echo strtolower($text);

Для UTF-8:

$text = 'Привет Мир!'; echo mb_strtolower($text); // привет мир!

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

$text = 'привет мир!'; echo ucwords($text);

Для UTF-8:

if(!function_exists('mb_ucwords')) < function mb_ucwords($str) < $str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8"); return ($str); >> $text = 'привет мир!'; echo mb_ucwords($text); // Привет Мир!

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

function mb_flip_case($string) < $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); > $text = 'Привет Мир!'; echo mb_flip_case($text); // пРИВЕТ мИР!

Комментарии 1

function invertCase($text)
$string = »;
/*
Решение №1
$mb_strlen = mb_strlen($text);
$i = $mb_strlen;
while ($i > 0) $i—;
$char = mb_substr($text, $i, 1);
$char = (mb_strtolower($char) === $char) ? mb_strtoupper($char) : mb_strtolower($char);
$string = $char.$string;
>
*/
// Решение №2
$arr = mb_str_split($text, 1);
foreach ($arr as $char) $char = (mb_strtolower($char) === $char) ? mb_strtoupper($char) : mb_strtolower($char);
$string .= $char;
>
return $string;
>

Авторизуйтесь, чтобы добавить комментарий.

Источник

strtoupper

Возвращает строку string , в которой все буквенные символы ASCII переведены в верхний регистр.

Байты в диапазоне от «a» (0x61) до «z» (0x7a) будут преобразованы в соответствующую заглавную букву путём вычитания 32 из каждого значения байта.

Функцию можно использовать для преобразования символов ASCII в строках, закодированных в UTF-8, поскольку многобайтовые символы UTF-8 будут проигнорированы. Для преобразования многобайтовых не ASCII символов используйте функцию mb_strtoupper() .

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

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

Возвращает строку в верхнем регистре.

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

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

Примеры

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

$str = «Mary Had A Little Lamb and She LOVED It So» ;
$str = strtoupper ( $str );
echo $str ; // выводит: MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
?>

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

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

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

User Contributed Notes 16 notes

One might think that setting the correct locale would do the trick with for example german umlauts, but this is not the case. You have to use mb_strtoupper() instead:

setlocale ( LC_CTYPE , ‘de_DE.UTF8’ );

echo strtoupper ( ‘Umlaute äöü in uppercase’ ); // outputs «UMLAUTE äöü IN UPPERCASE»
echo mb_strtoupper ( ‘Umlaute äöü in uppercase’ , ‘UTF-8’ ); // outputs «UMLAUTE ÄÖÜ IN UPPERCASE»

Here is how to make the character in upper case, except HTML-entities:

There is small kludge, however. Unfortunately I tired to find out the way how to exclude HTML-entity at the start of the line, so I have added 1 dummy character at the start of the text and removing it after the conversion.

something I myself first not thought about:
if there are any html entities (named entities) in your string, strtoupper will turn all letters within this entities to upper case, too. So if you want to manipulate a string with strtoupper it should contain only unicode entities (if ever).

When using UTF-8 and need to convert to uppercase with
special characters like the german ä,ö,ü (didn’t test for french,polish,russian but think it should work, too) try this:

function strtoupper_utf8($string) $string=utf8_decode($string);
$string=strtoupper($string);
$string=utf8_encode($string);
return $string;
>

If you only need to extend the conversion by the characters of a certain language, it’s possible to control this using an environment variable to change the locale:

It has been mentioned in a previous comment that all you need to do to let PHP’s strtoupper() do the conversion — instead of writing more or less complicated functions yourself — is to specify the locale in which you’re doing the case conversion:

It is important to note that setlocale() will silently fail if it can’t find the specified locale on your system, so *always* check its return value. Try different spellings: using «de_AT» as an example, there are various combinations that may or may not work for you: «de», «de_AT.utf8», «de_AT.iso-8859-1», «de_AT.latin1», «de_AT@euro», etc).

If you can’t find an appropriate locale setting, check your system configuration (locales are a system-wide setting, PHP gets them from the OS). On Windows, locales can be set from the Control Panel; on Linux it depends on your distribution. You can try «sudo dpkg-reconfigure locales» on Debian-based distros, or configure them manually. On Ubuntu Dapper, I had to copy entries over from /usr/share/i18n/SUPPORTED to /var/lib/locales/supported.d/local, then do the dpkg-reconfigure.

After you’re done, restart the web server.

That said, there are special cases where you want to do the conversion manually. In German, for example, the letter ‘ß’ (szlig) only exists as a lower-case character, and so doesn’t get converted by strtoupper. The convential way to express a ‘ß’ in an uppercase string is «SS». This function will take care of this exception (for Latin1 and most of Latin9, at least):

define ( «LATIN1_UC_CHARS» , «ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ» );
define ( «LATIN1_LC_CHARS» , «àáâãäåæçèéêëìíîïðñòóôõöøùúûüý» );

function uc_latin1 ( $str ) $str = strtoupper ( strtr ( $str , LATIN1_LC_CHARS , LATIN1_UC_CHARS ));
return strtr ( $str , array( «ß» => «SS» ));
>

Источник

Читайте также:  Windows несколько версий java
Оцените статью