file_get_contents在读取文件时显示意外输出

drc*_*lus 5 php base64 image file-get-contents

我想输出内联jpg图像作为base64编码的字符串,但是当我这样做时:

$contents = file_get_contents($filename);
print "<img src=\"data:image/jpg;base64,".$contents."\"/>";
Run Code Online (Sandbox Code Playgroud)

$filename带有base64图像的本地文本文件在哪里.输出如下:

<img src="data:image/jpg;base64,/9j/4A..... (the rest of the file)...." />
Run Code Online (Sandbox Code Playgroud)

而且好像没有渲染图像,但是它来自哪里?它不在文本文件中.如果删除,图像将正确显示.

Ano*_*ode 9

这是一个Unicode 字节顺序标记.该文件使用编辑器保存,该编辑器添加了BOM以指示文件编码为UTF-8.所以那些字节实际上在文件中,但是文本编辑器不会显示它,因为它不是文本.要存储此类数据,您需要删除BOM.最简单的方法是将编辑器配置为不添加BOM,但如果您没有对文件的创建过程产生影响,您也可以在脚本中即时执行:

print "<img src=\"data:image/jpeg;base64,".ltrim($contents, "\xEF\xBB\xBF")."\"/>";
Run Code Online (Sandbox Code Playgroud)