要检测字符串是否是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)); 

要看看你得到了从功能回来的确切值。

+0

对不起,我忘了提,未定义把它在PHP错误报告 – PlayerWet

+0

结果是假的,但奇怪的是,我改变路径为Base64和它仍然给我虚假,是不是很奇怪? – PlayerWet

+0

我的base64是使用这种结构的Javascript画布生成的: data:image/jpeg; base64,/ 9j/4AAQSkZJRgABAQAAAQABAAD .... – PlayerWet

尝试这种方式,

$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