этот работал для меня.
function mb_unserialize($string) {
$string = mb_convert_encoding($string, "UTF-8", mb_detect_encoding($string, "UTF-8, ISO-8859-1, ISO-8859-15", true));
$string = preg_replace_callback(
'/s:([0-9]+):"(.*?)";/',
function ($match) {
return "s:".strlen($match[2]).":\"".$match[2]."\";";
},
$string
);
return unserialize($string);
}
На самом деле РЕЗУЛЬТАТ содержит то, что Вы хотите, чтобы — продемонстрировал:
echo "$RESULT"
то, Что Вы показываете, - то, от чего Вы добираетесь:
echo $RESULT
<час> , Как отмечено в комментариях, различие - то, что (1) дважды заключенная в кавычки версия переменной (echo "$RESULT"
) сохраняет внутренний интервал значения точно, поскольку это представлено в переменной — новые строки, вкладки, несколько пробелов и весь —, тогда как (2) неупомянутая версия (echo $RESULT
) заменяет каждую последовательность одного или нескольких пробелов, вкладок и новых строк с одиночным пробелом. Таким образом (1) сохраняет форму входной переменной, тогда как (2) создает потенциально очень длинную одну строку вывода со 'словами', разделенными одиночными пробелами (где 'слово' является последовательностью непробельных символов; не должно быть никакого буквенно-цифрового индикатора ни в одном из слов).