Захват многострочного вывода в переменную Bash

этот работал для меня.

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);
}
515
задан codeforester 18 February 2017 в 05:18
поделиться

1 ответ

На самом деле РЕЗУЛЬТАТ содержит то, что Вы хотите, чтобы — продемонстрировал:

echo "$RESULT"

то, Что Вы показываете, - то, от чего Вы добираетесь:

echo $RESULT
<час>

, Как отмечено в комментариях, различие - то, что (1) дважды заключенная в кавычки версия переменной (echo "$RESULT") сохраняет внутренний интервал значения точно, поскольку это представлено в переменной — новые строки, вкладки, несколько пробелов и весь —, тогда как (2) неупомянутая версия (echo $RESULT) заменяет каждую последовательность одного или нескольких пробелов, вкладок и новых строк с одиночным пробелом. Таким образом (1) сохраняет форму входной переменной, тогда как (2) создает потенциально очень длинную одну строку вывода со 'словами', разделенными одиночными пробелами (где 'слово' является последовательностью непробельных символов; не должно быть никакого буквенно-цифрового индикатора ни в одном из слов).

1000
ответ дан Jonathan Leffler 18 February 2017 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: