[英]How to detect true base64 on PHP
在说DUPLICATE之前,我在 SO 中找不到关于我的具体问题的正确答案。
我知道如何使用 base64_decode()。 我的问题是我需要检查一个字符串是否是 base64 来解码它,如果不是,什么都不做。 问题是一些像"hey guys"
这样的英文字符串是 base64 有效的,但会返回纯粹的废话。
echo base64_decode("hey guys");
将返回(在 latin1 中)
ì »+
这不是我想要的,我有一个脚本循环遍历数据库中的字符串,检查 base64 并转换它。 问题是,第一次它会将"aGV5IGd1eXM="
转换为"hey guys"
并将其重做为"ì »+"
我如何检查它是否是真正的 base64? 有什么办法吗?
由于 base64 是从 8 位到 6 位数据表示的映射。 您只有以下选项:
通过这种方式,你可以检查数据是否不是base64编码的。 但是你无法检查数据是否是真正的base64,因为它可以是通过base64编码要求的普通字符串。
另一方面,如果您知道数据的结构,则可以检查 base64 文本的解码是否符合该结构。
试试这个:
function base64_check($name){
$encoding_type = mb_detect_encoding(base64_decode($name));
if($encoding_type == "ASCII" || $encoding_type == "UTF-8"){
return true;
}else{
return false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.