检测字符串是base64还是目录

To detect whether string is base64 or directory

原来我快疯了,不知道怎么解决这个问题。我已经测试了几个 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);

结果是undefined,不知道为什么。

也许答案太明显了,但我一直在旋转几个小时,不知道为什么验证没有变成错误的。谁能帮帮我?


编辑:

看起来函数运行良好,但我对验证感到困惑。问题是它没有检测到该字符串是 base64 图像并且 returns false.

即路由检测为false,传递base64文件字符串也检测为false

我不明白为什么验证失败,应该可以,base64 有这样的结构:

$path='data:image/jpeg;base64,/9j/4AAQSkZJRgAB...

Base64 已使用 canvas 在 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