php 判断字符串是否为 base64 编码
简单版
/**
* 判断字符串是否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
。并且字符串为空时也是无法判断的,所以需要主观判断一下是否适用当前情况。