首页 > 编程 > PHP > 正文

php 字符串 base64编码判断

2019-11-11 05:03:20
字体:
来源:转载
供稿:网友
今天在写一个业务的时候..利用foreach来获取post过来的大量数据。此时发现有些数据是base64编码过的。这时就要通过判断来进行解码,然后在网上找了一些方法。如下:$str = "ssssffdfds";if ($str == base64_encode(base64_decode($str))) {echo 'yes';}else{echo 'no';}以上只能判断百分之60左右的base64编码后的字符串如果遇到字符串长度比较短或者纯字母以及纯数字的话.那么这个判断就歇菜了。于是就问了一些人.在没人鸟我情况下就想到了这个判断是根据base64解码后再进行编码来判断字符串是否一致。接着我发现.长度为1的非base64编码字符串在base64解码后的内容是空,长度为2以上非base64编码的字符串解码后是显示乱码,此时灵感一来。就根据空、乱码来判断是否base64编码。以下是根据字符串是否utf8编码来判断的://判断否为UTF-8编码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加密function is_base64($str){//这里多了个纯字母和纯数字的正则判断if(@PReg_match('/^[0-9]*$/',$str) || @preg_match('/^[a-zA-Z]*$/',$str)){return false;}elseif(is_utf8(base64_decode($str)) && base64_decode($str) != ''){return true;}return false;}以上代码可以判断百分之99字符串是否base64编码,前提字符串编码是在UTF8下。is_base64(‘1’) //falseis_base64(1)//falseis_base64(base64_encode(‘测试下’))//true
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表