Возьмите вывод gzdeflate()
, например:
$a = gzdeflate('..........');
echo $a . "\n" . strlen($a);
Я получаю вывод, как:
?Ӄ
5
Итак, у меня есть 5-байтовая строка, которая содержит символы, которые не могут быть выведены должным образом, и, следовательно, не могут быть скопированы и вставлены.
Очевидно, что echo gzinflate('?Ӄ');
не работает, но echo gzinflate($a)
делает.
Есть ли способ получить фактическое содержание $a
в буфер обмена или вывести его таким образом, чтобы я мог скопировать и вставить его в gzinflate()
восстановить исходную строку? Единственный обходной путь, который я нашел, это что-то вроде:
$a = base64_encode(gzdeflate('..........'));
echo $a;
Что дает мне:
09ODAQA=
Это достаточно дружелюбно, чтобы сделать echo gzinflate(base64_decode('09ODAQA='));
и получить ..........
, но я бы хотел пропустить функции base64, если это возможно.
Проблема в том, что вы передаете двоичные данные через текстовый носитель. Если вам требуется распечатать данные на экране, где вы их выберете и скопируете, то нет способа транспортировать двоичные данные подобным образом.
Если это происходит в командной строке, вы мог делать это программно, не отображая фактическое содержание. Взять OS X pbcopy
а также pbpaste
команды:
$ php test.php | pbcopy
$ pbpaste | someotherprogram
Если вам требуется видимое текстовое представление, Вы должны убедиться, что вывод является ASCII-безопасным (или, по крайней мере, «Unicode safe»), а не необработанными двоичными данными. Для этого вам нужно будет использовать кодировку 64 или шестнадцатеричное кодирование ваших двоичных данных.
Я думаю, ваш браузер или консоль просто есть некоторые специальные символы, такие как разрыв строки и другие.
Вы можете поместить эту строку в любой файл (file_put_contents ()) и открыть этот файл, например, с помощью notepad ++. и вы увидите эти специальные символы в этом файле.