Регистронезависимость в implode

$string = 'Шерсть хлопок шерсть 15 35 15';
$array = implode(' ', array_unique(preg_split('/\s+/iu', $string)));
echo $array;

Если данные в одном регистре, то скрипт работает, удаляет повторяющиеся значения. А если есть заглавные буквы, то нет, несмотря на флаг i. Как это исправить?


Ответы (1 шт):

Автор решения: Slava Rozhnev

Приводим строку к нижнему регистру. По окончании возвращаем заглавную букву:

<?php
function mb_ucfirst($string)
{
    return mb_strtoupper(mb_substr($string, 0, 1)).mb_substr($string, 1);
}

$string = 'Шерсть хлопок шерсть 15 35 15';
$result = implode(
    ' ', 
    array_unique(
        preg_split('/\s+/iu', 
            mb_strtolower($string)
        )
    )
);

echo mb_ucfirst($result);

PHP run and share online

→ Ссылка