Управление регистром строк в php

Управление регистром строк. Введение

Управление регистром строк в phpДля смены регистра в строке существует не малое количество функций. В этой статье я хочу показать их разнообразие и объяснить какие в каком случае стоит использовать. Поскольку не редко возникают проблемы при работе со сменой регистра, особенно при обработке кириллических строк в кодировке utf-8.

Управление регистром строк. Перевод строки в верхний регистр

Для перевода всех символов строки в нижний регистр существует две функции – strtolower и mb_strtolower. При работе с кириллическими строками в кодировке utf-8, стоит использовать функцию mb_strtolower, я для остальных случаев можно использовать просто strtolower.
Пример:

// исходная строка
$string = "строка из ЧЕТЫРЕХ слов";
// перевод всех символов в нижний регистр
$mb_lower = mb_strtolower($string, "utf-8");
$lower = strtolower($string);
echo "mb_lower: $mb_lower<br/>";
echo "lower: $lower<br/>";

Управление регистром строк. Перевод строки в нижний регистр

Для перевода всех символов строки в верхний регистр, так же существует две функции – strtoupper и mb_strtoupper. При работе с кириллическими строками в кодировке utf-8, стоит использовать функцию mb_strtoupper, я для остальных случаев можно использовать просто strtoupper.
Пример:

// исходная строка
$string = "строка из ЧЕТЫРЕХ слов";
// перевод всех символов в нижний регистр
$mb_upper = mb_strtoupper($string, "utf-8");
$upper = strtoupper($string);
echo "mb_upper: $mb_upper<br/>";
echo "upper: $upper<br/>";

Управление регистром строк. Перевод в верхний регистр первых символов

Существует еще несколько функций для перевода символов в верхний регистр: ucfirst – преобразовывает только первый символ в строке. И ucwords, которая переводит в верхний регистр первый символ каждого слова строки. Но, как и с другими функциями, работающими со строками, есть проблема при работе с кириллицей в кодировке utf-8. Поэтому, стоит использовать эти функции только для обработки латиницы. А при работе с кириллицей корректней будет использовать функцию mb_convert_case. Она может выполнять сразу несколько операций: переводить всю строку в верхний или нижний регистр и переводить в верхний регистр все первые символы каждого слова в строке. А для перевода в верхний регистр только первого символа кириллической строки уже придется немного извернуться.
Пример:

// исходная строка
$string = "text latin";

// перевод в верхний регистр первого символа строки
$ucfirst = ucfirst($string);
// вывод результата
echo "ucfirst: $ucfirst<br/>";

// перевод первых символов каждого слова в верхний регистр
$ucwords = ucwords($string);
// вывод результата
echo "ucwords: $ucwords<br/>";


// исходная строка
$string = "строка из ЧЕТЫРЕХ слов";

// перевод всех символов в верхний регистр. Кодировка UTF-8
$upper = mb_convert_case($string, MB_CASE_UPPER, "UTF-8");
// вывод результата
echo "upper: $upper<br/>";

// перевод всех символов в нижний регистр. Кодировка UTF-8
$lower = mb_convert_case($string, MB_CASE_LOWER , "UTF-8");
// вывод результата
echo "lower: $lower<br/>";

// перевод первых символов каждого слова в верхний регистр. Кодировка UTF-8
$case_title = mb_convert_case($string, MB_CASE_TITLE , "UTF-8");
// вывод результата
echo "case_title: $case_title<br/>";

// перевод в верхний регистр первого символа строки
// получаем первый символ строки
$first_char = mb_substr($string, 0, 1, 'UTF-8');
// переводим первый символ в верхний регистр
$first_upper = mb_convert_case($first_char, 'UTF-8');
// берем от строки все символы, кроме первого
$all_characters = mb_substr($string, 1, mb_strlen($string), 'UTF-8');
// соединяем первый символ и все остальные
$result = $first_upper . $all_characters;
// вывод результата
echo "result: $result<br/>";
Рассказать друзьям:


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

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

*