Какую функцию PHP использовать для чтения двоичного файла в строку?
Какую функцию PHP использовать для чтения двоичного файла в строку?
Ответ 1
Попробуй это
$handle = @fopen("/path/to/file.bin", "rb");
if ($handle) {
while (!feof($handle)) {
$buffer[] = fgets($handle, 400);
}
fclose($handle);
$buffer[0][0] = chr(hexdec("FF")); // set the first byte to 0xFF
}
// convert array to string
Ответ 2
Вы ищете функцию fread
.
fread - чтение двоичного файла
Пример:
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
Примечание:
В системах, которые различают двоичные и текстовые файлы (то есть Windows) файл должен быть открыт с помощью 'b' включен в параметр режима fopen().
Ответ 3
file_get_contents
достаточно хорош. Кажется, что он читает файлы в двоичном режиме. Я проверил немного PHP скрипт, чтобы проверить это. Нет сообщений MISMATCH.
<?php
foreach (glob('/usr/bin/*') as $binary) {
$php = md5(file_get_contents($binary));
$shell = shell_exec("md5sum $binary");
if ($php != preg_replace('/ .*/s', '', $shell)) {
echo 'MISMATCH', PHP_EOL;
}
else {
echo 'MATCH', PHP_EOL;
}
echo $php, ' ', $binary, PHP_EOL;
echo $shell, PHP_EOL;
}
Следующее примечание от manual:
Примечание. Эта функция двоично-безопасна.