加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹤壁站长网 (https://www.0392zz.cn/)- 分布式云、存储数据、视频终端、媒体处理、内容创作!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php判断字符串编码函数

发布时间:2022-06-17 08:39:15 所属栏目:PHP教程 来源:互联网
导读:字符编码判断是我们时常全用于的一些东西,特别是我想判断用户输入的或提交过来的字符是什么编码从而进行有效的处理,下面我来给大家介绍php判断字符串编码函数. mb_detect_encoding()($str); //判断字符串是什么编码 if ($tag === mb_convert_encoding(mb_con
  字符编码判断是我们时常全用于的一些东西,特别是我想判断用户输入的或提交过来的字符是什么编码从而进行有效的处理,下面我来给大家介绍php判断字符串编码函数.
 
  mb_detect_encoding()($str);
  //判断字符串是什么编码
  if ($tag === mb_convert_encoding(mb_convert_encoding($tag, "GB2312", "UTF-8"), "UTF-8", "GB2312")) {
  }
  else {//如果是gb2312 的就转换为utf8的
  $tag = mb_convert_encoding($tag, 'UTF-8', 'GB2312');
  }
  函数可以检测编码不过使用该函数必须打开php的extension=php_mbstring.dll扩展,如果大家使用的是空间而没修改php.ini配置文件夹的权限会不会有更好的函数来检查字符串编码呢,答应是肯定的.
 
  判断字符串是否为UTF-8编码,代码如下:
 
  /**
   +----------------------------------------------------------
   * 检查字符串是否是UTF8编码
   +----------------------------------------------------------
   * @param string $string 字符串
   +----------------------------------------------------------
   * @return Boolean
   +----------------------------------------------------------
   */
  function is_utf8($string)
  {
      return preg_match('%^(?:
           [x09x0Ax0Dx20-x7E]            # ASCII
         | [xC2-xDF][x80-xBF]             # non-overlong 2-byte
         |  xE0[xA0-xBF][x80-xBF]        # excluding overlongs
         | [xE1-xECxEExEF][x80-xBF]{2}  # straight 3-byte
         |  xED[x80-x9F][x80-xBF]        # excluding surrogates
         |  xF0[x90-xBF][x80-xBF]{2}     # planes 1-3
         | [xF1-xF3][x80-xBF]{3}          # planes 4-15
         |  xF4[x80-x8F][x80-xBF]{2}     # plane 16
     )*$%xs', $string);
  }
  可检查出GB2312还是UTF-8,代码如下:
 
  function is_gb2312($str)
  {
          for($i=0; $i<strlen($str); $i++) {
                  $v = ord( $str[$i] );
                  if( $v > 127) {
                          if( ($v >= 228) && ($v <= 233) )
                          { //开源代码phpfensi.com
                                  if( ($i+2) >= (strlen($str) - 1)) return true;  // not enough
  characters
                                  $v1 = ord( $str[$i+1] );
                                  $v2 = ord( $str[$i+2] );
                                  if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf  
  编码
                                          return false;
                                  else
                                          return true;
                          }
                  }
          }
          return true;
  }
  有些朋友说可以使用mb_check_encoding函数来检查,这个本人没测试过大家可自行测试.

(编辑:鹤壁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读