检测字符串是base64还是目录

时间:2016-12-27 02:14:33

标签: 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;
    }
}

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);

}

非常不酷的解决方案......

2 个答案:

答案 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