要检测字符串是否是base64或目录
问题描述:
事实证明我疯了,却不知道如何解决这个问题。我测试了几个base64验证函数,以检测字符串是base64还是文件的路径。要检测字符串是否是base64或目录
$path='/img/2015/desert-and-34.jpg';
function itsBase64($data){
if (base64_encode(base64_decode($data)) === $data){
return true;
} else {
return false;
}
}
itsBase64($path);
结果是不确定的,我不知道为什么。
也许答案太明显了,但我一直在旋转几个小时,却不知道为什么验证不会是错误的。任何人都可以帮我一把吗?
编辑:
它看起来像功能工作正常,但我自己的困惑与验证。问题是它没有检测到该字符串是base64图像并返回false。
也就是说,路由将其检测为false,并且如果它传递base64文件字符串,它也会将其检测为false。
我不明白为什么验证失败,应该工作,基数64有这样的结构:
$path='data:image/jpeg;base64,/9j/4AAQSkZJRgAB...
Base64编码已经在JavaScript中使用帆布产生。
为什么你不认识它为base64?
我已经做了一点小事以避开障碍,希望有人能帮我一把。
if(substr($image, 0,11) === 'data:image/'){
$imageWidth = getimagesize($image);
$image1->base64_to_file($image, $DestJPG);
}
一个非常酷的解决方案...
答
未定义不是一个PHP的术语。你究竟在哪里得到这个?
你应该尝试:
var_dump(itsBase64($path));
要看看你得到了从功能回来的确切值。
答
尝试这种方式,
$path='/img/2015/desert-and-34.jpg';
function itsBase64($data){
if (base64_encode(base64_decode($data)) === $data){
return 1;
} else {
return 0;
}
}
echo itsBase64($path); // Output is 0
+0
对不起,我没有看到你的消息。事实证明,即使路径变量是base64,该函数的结果总是为false。我不知道的是,如果问题是用javascript canvas生成的base64 jpg,你能给出这个错误吗? – PlayerWet
对不起,我忘了提,未定义把它在PHP错误报告 – PlayerWet
结果是假的,但奇怪的是,我改变路径为Base64和它仍然给我虚假,是不是很奇怪? – PlayerWet
我的base64是使用这种结构的Javascript画布生成的: data:image/jpeg; base64,/ 9j/4AAQSkZJRgABAQAAAQABAAD .... – PlayerWet