Php 检测字符串是base64还是directory
结果发现我不知道如何解决这个问题就发疯了。我已经测试了几个base64验证函数,以检测字符串是base64还是文件的路径Php 检测字符串是base64还是directory,php,base64,Php,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; } } itsB
$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...
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
抱歉,我忘了提到undefined将其放入PHP错误报告结果为false,但奇怪的是我更改了base64的路径,它仍然给我false,不是吗?我的base64是使用Javascript画布生成的,具有以下类型的结构:data:image/jpeg;base64,/9j/4AAQSKZJRGABAQAAAQABAD….@DekelI给出的答案是有效的,因为我已经能够验证函数的结果是否为false,虽然现在我的问题不同了,但当您可以查看我编辑的第一篇文章时,包含了更多信息,非常感谢。对不起,我没有看到您的消息。事实证明,在现实中,该函数的结果总是错误的,即使path变量是base64。我不知道的是,如果问题是用javascript画布生成的base64 jpg,您能给出这个原因的错误吗?