简单版

/**
 * 判断字符串是否base64编码
 */
function func_is_base64($str)
{  
    return $str === base64_encode(base64_decode($str, true)) ? true : false;
}

简单版判断字符串是否为 base64 编码,主要根据 base64_decode 函数在解码非 base64 字母表的字符时的反应判断的。

base64_decode ( string $data [, bool $strict = false ] ) : string

data:编码过的数据。
strict:当设置 strict 为 TRUE 时,一旦输入的数据超出了 base64 字母表,将返回 FALSE。 否则会静默丢弃无效的字符。

不管是否设置 strict 参数,解码非 base64 字母表的字符都会产生与原字符串不一样的结果。

缺陷:base64 字母表包含 /[a-zA-z\d+/]/,如果字符串完全是由 base64 字母表内字符构成,那么这样的情况无法判断是否为 base64 编码后的字符串。比如:I=LOVE=YOU。并且字符串为空时也是无法判断的,所以需要主观判断一下是否适用当前情况。

文章目录