这几天一直在做php中关于base64编码的逻辑,个中就有一项关于操作php判定一个字符串是否为base64编码。
php中判定一个字符串是否为base64编码,凡是的做法为,将这个字符串举办 base64_decode 解码,然后再举办编码,再比较原有的字符串,假如相等就是BASE64编码后的字符串,假如不等就不是。虽然尚有其它的要领,下面来详细说一下。
php简朴的判定字符串是否为base64编码自界说函数:
<?php /** * 判定字符串是不是base64编码 * base64_decode:解码 * base64_encode:再次编码 */ function is_base64($str){ return $str == base64_encode(base64_decode($str)) ? true : false; } ?>函数利用:
<?php $str = '飞鸟慕鱼博客'; //对字符串举办base64编码 $b = base64_encode($str); echo $b; echo '<br/>'; if(is_base64($b)){ echo '是base64编码'; }else{ echo '不是base64编码'; } ?>输出功效:
6aOe6bif5oWV6bG85Y2a5a6i 是base64编码留意:以上只能判定百分之60阁下的base64编码后的字符串 假如碰着字符串长度较量短可能纯字母以及纯数字的话.那么这个要领就不可了。长度为1的非base64编码字符串在base64解码后的内容是空,长度为2以上非base64编码的字符串解码后是显示乱码。
php按照字符串是否utf8编码来判定,是否为 base64 编码php自界说判定是否为UTF-8的编码的函数
<?php function is_utf8($str){ $len = strlen($str); for($i = 0; $i < $len; $i++){ $c = ord($str[$i]); if($c > 128){ if(($c > 247)){ return false; }elseif($c > 239){ $bytes = 4; }elseif($c > 223){ $bytes = 3; }elseif ($c > 191){ $bytes = 2; }else{ return false; } if(($i + $bytes) > $len){ return false; } while($bytes > 1){ $i++; $b = ord($str[$i]); if($b < 128 || $b > 191){ return false; } $bytes--; } } } return true; } ?>自界说判定是否为 base64 编码的函数
<?php /** * 判定是否用base64举办encode过 * 需要利用 is_utf8 来判定是否为 utf-8的编码 * @param $str * @return bool */ function str_is_base64($str){ if (is_utf8(base64_decode($str)) && base64_decode($str) != '') { return true; } return false; } ?>小提示:在网上看到有人在利用这个要领之前,需要先过滤掉纯数字或纯字母,小我私家感受其实没有须要,纯数字或纯字母,都可以通过这个判定出来!虽然你也可以本身过滤测试一下