Как правильно раскодировать сложную строку base64, где три =?UTF-8?B?

текст, выделенный жирным шрифтомЕсть вот такая строка - это название файла во вложении к email:

=?UTF-8?B?0KHQutC70LDQtCDQntCe0J4g0JPQsNGA0LDQvdGCINC00LvRjyDQkdGL0YHRgtGA0L7QutCw0LHQtdC7?= =?UTF-8?B?0YwsIFJ1c0NhYmxlLCDQmtCw0LHQtdC70YzQvdGL0Lkg0YHQv9GA0LDQstC+0YfQvdC40LosINCT0LQ=?= =?UTF-8?B?0LXQmtCw0LHQtdC70YwsINCa0LDQsdC10LvRjCDQntC90LvQsNC50L0uINGCLiA4LTkwOS0zNDMtMTMt?= 00..xls

Тут, как видим, три =?UTF-8?B? - и это всё одна строка, заканчивающаяся на xls. Исходное название файла, до кодировки почтовой программой - "Склад ООО Гарант для Быстрокабель, RusCable, Кабельный справочник, ГдеКабель, Кабель Онлайн. т. 8-909-343-13-00..xls"

Как из закодированной строки =?UTF-8?B?.... получить исходную строку на русском?

Пробовал вот так:

$atachname = base64_decode(str_ireplace(array("=?utf-8?B?",'?='), array('',''), $atachname));

В таком варианте нормально раскодирует до буквы Г в "Где кабель", а после неё идёт уже кривая кодировка.

UPD. Благодаря совету Akin вопрос решён. Написал вот такую функцию для декодирования таких строк:

function decode_utf8($str)
{
    $parts = preg_split("/=\?UTF-8\?B\?/i", $str);

    $res_str  = '';
    foreach($parts as $p)
    {
        if ($p)
        {
            $parts2 = preg_split("/\?=/i", $p);
            $s = base64_decode($parts2[0]);
            if (count($parts2) > 1 )
                $s .= $parts2[1];

            $res_str .= $s.' ';
        }
    }   

    return trim($res_str);
}

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

Автор решения: Dliv

Написал функцию, которая решает эту задачу:

function decode_utf8($str)
{
    $parts = preg_split("/=\?UTF-8\?B\?/i", $str);

    $res_str  = '';
    foreach($parts as $p)
    {
        if ($p)
        {
            $parts2 = preg_split("/\?=/i", $p);
            $s = base64_decode($parts2[0]);
            if (count($parts2) > 1 )
                $s .= $parts2[1];

            $res_str .= $s.' ';
        }
    }   

    return trim($res_str);
}
→ Ссылка
Автор решения: wnull
function decode_utf8(string $str): string
{
    $temp = preg_split('/\s*\?=\s*/', preg_replace('/\s*=\?UTF-8\?B\?\s*/', '', $str));
    $end = array_pop($temp);
    $out = '';

    foreach ($temp as $value) {
        $out .= base64_decode($value);
    }

    return $out . $end;
}

https://3v4l.org/QuMf8

→ Ссылка