php从二进制文件获取字符串
我有一张JPG图片,里面有XMP元数据。php从二进制文件获取字符串,php,file,binaryfiles,strpos,Php,File,Binaryfiles,Strpos,我有一张JPG图片,里面有XMP元数据。 我想读这些数据,但怎么读呢 $content = file_get_contents($fileName); var_dump($content); 显示实际字节数553700 但是 显示373821 所以,我不能简单的做 $xmpStart = strpos($content, '<x:xmpmeta'); $xmpStart=strpos($content,是一个声称能够读取XMP元数据的PHP包。exif_read_data()PHP函数
我想读这些数据,但怎么读呢
$content = file_get_contents($fileName);
var_dump($content);
显示实际字节数553700
但是
显示373821
所以,我不能简单的做
$xmpStart = strpos($content, '<x:xmpmeta');
$xmpStart=strpos($content,是一个声称能够读取XMP元数据的PHP包。exif_read_data()PHP函数可以帮助读取XMP元数据
这里的更多信息:本质上,您正在读取的数据类型并不重要-strlen()
等应该始终有效
我认为这里发生的是,在您的服务器上,strlen()
被内部覆盖,并且内部字符编码被设置为UTF-8
UTF-8是一种多字节编码,因此您的字节流中的一些字符(任意)被解释为多字节字符-导致长度缩短为373821
,而不是553700
我想不出比总是显式指定单字节编码更好的解决方法,比如iso-8859-1
:
$pos = strpos($content, '<x:xmpmeta', 0, 'iso-8859-1');
$pos=strpos($content,'好的,谢谢。这会有帮助,但如果我必须从二进制文件中读取自己的字符串,怎么做?@Lari你必须构建自己的JPG解析器。虽然肯定非常有趣,但这可能是一项艰巨的任务。让我们忘掉JPG吧。:)我有一些二进制文件。如何在PHP中签入,该文件是否包含多个字符串?啊,现在更清楚了。本质上,使用的数据类型应该无关紧要。你能试试strlen($content,“iso-8859-1”)
是否给出了正确的值吗?$pos=strpos($content,'
$pos = strpos($content, '<x:xmpmeta', 0, 'iso-8859-1');