Оглавление
Проверка регистра строки
Функцияctype_upper($str)
проверяет являются ли все символы строки $str
заглавными.
$str = 'Test string';
if(ctype_upper(mb_substr($str, 0, 1))){
echo 'Первая буква строки <b>«' . $str . '»</b> заглавная';
} else {
echo 'Первая буква строки <b>' . $str . '</b> прописная';
}
Результат
Первая буква строки «Test string» заглавная
С кириллицей тут есть засада,
mb_substr()
хотя и возвращает корректный символ, но его почему-то не распознаёт ctype_upper()
как заглавную буку. Поэтому можно реализовать такую проверку:
$str = 'Строка для проверки';
$firstLetter = mb_substr($str, 0, 1);
if(mb_strtolower($firstLetter) != $firstLetter){
echo 'Первая буква строки <b>«' . $str . '»</b> заглавная';
} else {
echo 'Первая буква строки <b>' . $str . '</b> прописная';
}
Результат:
Первая буква строки строка для проверки прописная
Первая заглавная буква
Функция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('/(?<!^)(?!$)/u', $str);
//Перебираем массив проверяя и преобразовывая каждый символ
foreach ($characters as $key => $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); //у ЛУКомОРЬЯ дУБ ЗЕЛЁНЫЙ.
Удачи в работе со строками!