使用哪个PHP函数将二进制文件读入字符串?

时间:2010-12-28 11:33:57

标签: php file-io binaryfiles

用于将二进制文件读入字符串的PHP函数是什么?

3 个答案:

答案 0 :(得分:17)

您正在寻找fread功能。

  

fread - 二进制安全文件读取

示例:

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

注意:

  

在区分的系统上   二进制和文本文件(即Windows)   必须使用'b'打开文件   包含在fopen()模式参数中。

答案 1 :(得分:15)

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

  

注意:此功能是二进制安全的。

答案 2 :(得分: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