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

2022-08-30 20:41:14

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


答案 1

file_get_contents已经足够好了。它似乎以二进制模式读取文件。我做了一个小的PHP脚本来检查这一点。未生成不匹配消息。

<?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;
}

以下说明来自手册

注意:此函数是二进制安全的。


答案 2

您正在寻找胎面功能。

fread — 二进制安全文件读取

例:

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

注意:

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


推荐