PHP自动判断字符串是gb2312还是utf8编码

十度 wordpress 2015年12月01日 收藏

最近开发网站,需要判断用户是搜索什么关键词进来的。功能是实现了,但是遇到一个问题,就是不知道用户用的搜索引擎是什么编码的。因此经常一阵搜索,终于找到下面的解决方案:

//返回: true – 含GB编码 false – 为UTF-8编码

  1. function is_gb2312($str)
  2. {
  3. for($i=0; $i<strlen($str); $i++) {
  4. $v = ord( $str[$i] );
  5. if( $v > 127) {
  6. if( ($v >= 228) && ($v <= 233) )
  7. {
  8. if(($i+2) >= (strlen($str)- 1)) return true; // not enough characters
  9. $v1 = ord( $str[$i+1] );
  10. $v2 = ord( $str[$i+2] );
  11. if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码
  12. return false;
  13. else
  14. return true;
  15. }
  16. }
  17. }
  18. return true;
  19. }