• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP判断字符串是否是base64编码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在列表展示用户信息的时候发现有是base64的微信昵称,还有一些并不是base64的字符,所以就需要判断字符是否需要base64解码。
这时就要通过判断来进行解码,然后在网上找了一些方法。如下:

$str = "5L2g5aW9"; 
if ($str == base64_encode(base64_decode($str))) { 
    echo 'yes'; 
}else{ 
    echo 'no'; 
} 

以上只能判断百分之60左右的base64编码后的字符串 如果遇到字符串长度比较短或者纯字母以及纯数字的话.那么这个判断就歇菜了。
长度为1的非base64编码字符串在base64解码后的内容是空,长度为2以上非base64编码的字符串解码后是显示乱码,此时灵感一来。就根据空、乱码来判断是否base64编码。
以下是根据字符串是否utf8编码来判断的:

//判断字符串是否经过编码方法
public function is_base64($str){ //这里多了个纯字母和纯数字的正则判断 if(@PReg_match('/^[0-9]*$/',$str) || @preg_match('/^[a-zA-Z]*$/',$str)){ return false; }elseif($this->is_utf8(base64_decode($str)) && base64_decode($str) != ''){ return true; } return false; } //判断否为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; }

以上代码可以判断百分之99字符串是否base64编码,前提字符串编码是在UTF8下。

is_base64(‘1’) //false 
is_base64(1)//false 
is_base64(base64_encode(‘测试下’))//true
https://www.cnblogs.com/best-always/p/12036070.html

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap