$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。
我不明白为什么验证失败,应该有效,base64有这样的结构:
$path='data:image/jpeg;base64,/9j/4AAQSkZJRgAB...
在javascript中使用canvas生成了Base64。
为什么不将它识别为base64?
为了摆脱困境,我做了一点点软糖,希望有人能帮帮忙。
if(substr($image, 0,11) === 'data:image/'){
$imageWidth = getimagesize($image);
$image1->base64_to_file($image, $DestJPG);
}
非常不酷的解决方案......
答案 0 :(得分:1)
未定义不是php术语。你到底在哪里得到这个?
你应该尝试:
var_dump( itsBase64($path) );
要查看从函数中返回的确切值。
答案 1 :(得分:1)
试试这种方式,
$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