Какую функцию PHP использовать для чтения двоичного файла в строку? - PullRequest
14 голосов
/ 28 декабря 2010

Какую функцию PHP использовать для чтения двоичного файла в строку?

Ответы [ 3 ]

17 голосов
/ 28 декабря 2010

Вам нужна функция fread.

fread - чтение бинарно-безопасного файла

Пример:

$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

Примечание:

В системах, которые различают двоичные и текстовые файлы (например, Windows), файл должен быть открыт с включенным 'b'в режиме fopen ().

15 голосов
/ 22 марта 2015

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 :

Примечание: эта функция является бинарно-безопасной.

1 голос
/ 28 декабря 2010

Попробуйте это

$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 
...