【问题标题】:file_get_contents shows unexpected output while reading a filefile_get_contents 在读取文件时显示意外输出
【发布时间】:2012-04-01 00:39:59
【问题描述】:

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

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

其中$filename 是带有base64 图像的本地文本文件。输出如下:

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

而且显然图像没有被渲染,但是 来自哪里?它不在文本文件中。如果删除,图像可以正常显示。

【问题讨论】:

  • 你在 var_dump($contents); 中得到了什么?

标签: php image base64 file-get-contents


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多