Управление регистром строк. Введение
Для смены регистра в строке существует не малое количество функций. В этой статье я хочу показать их разнообразие и объяснить какие в каком случае стоит использовать. Поскольку не редко возникают проблемы при работе со сменой регистра, особенно при обработке кириллических строк в кодировке 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/>";