如何使用PHP函数将二进制文件读入字符串?
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;
}
以下注释来自手册:
注意:此函数是二进制安全的。
你正在寻找 fread
函数。
fread — 读取文件并确保二进制安全
示例:
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
注意:
在区分二进制文件和文本文件的系统上(例如 Windows),必须在 fopen() 的模式参数中包含 'b',以打开该文件。
b
标志。 - Álvaro González试试这个
$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