Как сделать первую букву заглавной php кирилица

Примеры решения задач

Задача

Задача. Дана строка ‘minsk’. Сделайте из нее строку ‘MINSK’.

Решение: воспользуемся функцией strtoupper и сразу получим результат:

Задача

Задача. Дана строка ‘минск’. Сделайте из нее строку ‘МИНСК’.

Решение: функцией strtoupper мы не можем воспользоваться, так как она некорректно работает с русскими буквами. Воспользуемся функцией mb_strtoupper и сразу получим результат:

Задача

Задача. Дана строка ‘MINSK’. Сделайте из нее строку ‘Minsk’.

Решение: готовой функции для решения задачи в PHP не существует. Поэтому сначала воспользуемся функцией strtolower (в результате получится ‘minsk’), а затем функцией ucfirst:

Задача

Задача. В переменной $date лежит дата в формате ’31-12-2030′. Преобразуйте эту дату в формат ‘2030.12.31’.

Решение: для начала разобьем строку ’31-12-2030′ в массив с помощью функции explode:

В полученном массиве в $arr будет лежать 31 (то есть день), в $arr — месяц, а в $arr — год. Сольем элементы этого массива в новую строку:

Как сделать первую букву заглавной php кирилица UTF-8

Но как только дело доходит до UTF-8 начинаются проблемы, потому, что кирилица в UTF-8 занимает 2 байта, и поэтому ничего не получится. Для этого будем использовать «костыль» от Multibyte String Functions. Если этот плагин установлен на PHP, то можно просто использовать 2 аналогичные функции: mb_ucfirst и mb_convert_case.


А если их нет, то нужно дополнить код своими альтернативами:

if (!function_exists('mb_ucfirst') && extension_loaded('mbstring'))
{
    /**
     * mb_ucfirst - преобразует первый символ в верхний регистр
     * @param string $str - строка
     * @param string $encoding - кодировка, по-умолчанию UTF-8
     * @return string
     */
    function mb_ucfirst($str, $encoding='UTF-8')
    {
        $str = mb_ereg_replace('^+', '', $str);
        $str = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding).
               mb_substr($str, 1, mb_strlen($str), $encoding);
        return $str;
    }
}

$str = 'первые буквы';

// пробуем кириллицу в юникоде преобразовать функцией ucfirst
echo ucfirst($str) . '';

// пробуем кириллицу в юникоде преобразовать функцией ucwords
echo ucwords($str) . '';

// обрабатываем объявленной функцией mb_ucfirst()
echo mb_ucfirst($str) . '';

// преобразовываем функцией mb_convert_case
echo mb_convert_case($str, MB_CASE_TITLE, 'UTF-8');

Результатом этому коду станут такие строчки:

первые буквыпервые буквыПервые буквыПервые Буквы

Как видите, первые 2 строчки не сработали, из-за того, что обычные ucfirst и ucwords не умеют работать с кирилицей в UTF-8.

С помощью этих функций можно построить успешный бизнес на продвижении сайтов. Ну не только на этих функциях, но поверьте, в продвижении сайтов всегда нужно всё максимально автоматизировать.

3 458

Case-insensitivity and multibyte strings

In a recent discussion in the internals mailing list, we came to the conclusion, there is no need for a multibyte variant of this function (e.g. ). The reason behind this is: A multibyte variant of this function would behave no different than the non-multibyte function. Multibyte variants behave differently when the offset/position has relevance at which the string was found. As this is not the case for this function, there is no need for that.

Concerning the case-insensitivity for this function: This might be a feature for the future, as the relevance for that is much less compared to the case-sensitive function. With that in mind, the only valid variants would be str_contains/mb_str_icontains. I assume PHP developers would be confused if this RFC offered such inconsistent variants of this function, so it’s better to start small and iterate upon that.

Функция 4

Любую строку можно экспортировать (превратить) в массив, элементами которого могут быть как слова, так и предложения. Для этого в php существует функция explode().


Рассмотрим несколько примеров:

a) Разобьем строку по словам.

PHP

<?php $string = ‘Особенности национальной охоты и особенности национальной рыбалки’; echo $string.'<br>’; $wordsArray = array(); $wordsArray = explode(‘ ‘, $string); echo ‘<pre>’; print_r($wordsArray); echo ‘

1 2 3 4 5 6 7 8

<?php

$string=’Особенности национальной охоты и особенности национальной рыбалки’;

echo$string.'<br>’;

$wordsArray=array();

$wordsArray=explode(‘ ‘,$string);

echo'<pre>’;

print_r($wordsArray);

echo’

‘; ?>

б) По предложениям


Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

PHP

<?php $string = ‘Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки’; echo $string.'<br>’; $wordsArray = array(); $wordsArray = explode(‘. ‘, $string); echo ‘<pre>’; print_r($wordsArray); echo ‘

1 2 3 4 5 6 7 8

<?php

$string=’Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки’;

echo$string.'<br>’;

$wordsArray=array();

$wordsArray=explode(‘. ‘,$string);

echo'<pre>’;

print_r($wordsArray);

echo’

‘; ?>

Так же это пункт статьи имеет обратную операцию. Из массива образовать строку. Допустим, мы имеем массив вида:

1-й элемент: Hello

2-й: «пробел»


3-й: World

…при помощи функции implode() массив преобразуется в строку такого вида: «Hello World», где 2-й элемент массива есть пробелом между словами Hello и World.

Рассмотрим расширенный вариант предыдущего примера:

PHP

<?php $string = ‘Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки’; echo $string.'<br>’; $wordsArray = array(); $wordsArray = explode(‘. ‘, $string); echo ‘<pre>’; print_r($wordsArray); echo ‘

1 2 3 4 5 6 7 8

<?php

$string=’Два Фильма. Особенности национальной охоты. Особенности национальной рыбалки’;

echo$string.'<br>’;

$wordsArray=array();

$wordsArray=explode(‘. ‘,$string);

echo'<pre>’;

print_r($wordsArray);

echo’

‘; echo »; $string = implode(‘. ‘, $wordsArray); echo ‘обратно склеенная строка: ‘.$string.»; ?>

Introduction

checks if a string is contained in another string and returns a boolean value (/) whether or not the string was found.

The typical way to check if a string is contained in another is mostly done by using the functions or . Because this feature is such a common use-case in almost every project, it should deserve its own dedicated function: .

Repurposing and for this use-case has a few down sides. Either, they are:

  • not very intuitive for a reader
  • easy to get wrong (especially with the comparison)
  • or hard to remember for new PHP developers.

Because of that, many PHP frameworks offer a helper function for this behavior, because it is so ubiquitous. This indicates the significance and the necessity pretty well.


С этим читают