站长论坛

标题: UTF-8编码判断函数 [打印本页]

作者: superadmin    时间: 2007-10-4 22:35
标题: UTF-8编码判断函数
该函数用于判断字符串是否以UTF-8编码,若是则返回TRUE,否则返回FALSE。

以前从另一种语言(忘了是什么语言)改过一函数,但用在统计系统里发现URL来源里会有乱码,也就是部分字符会判断不准确,下面这段代码经过两周的测试还没发现什么问题
  1. function isUTF8($str){
  2. $length=strlen($str);
  3. for($i=0;$i<$length;$i++){
  4.   $high=ord($str{$i});
  5.   if(($high==0xC0)||($high==0xC1)){
  6.    return false;
  7.   }elseif($high<0x80){
  8.    continue;
  9.   }elseif($high<0xC0){
  10.    return false;
  11.   }elseif($high<0xE0){
  12.    if(++$i>=$length)
  13.     return true;
  14.    elseif(($str{$i}&"\xC0")=="\x80")
  15.     continue;
  16.   }elseif($high<0xF0){
  17.    if(++$i>=$length){
  18.     return true;
  19.    }elseif(($str{$i}&"\xC0")=="\x80"){
  20.     if(++$i>=$length)
  21.      return true;
  22.     elseif(($str{$i}&"\xC0")=="\x80")
  23.      continue;
  24.    }
  25.   }elseif($high<0xF5){
  26.    if(++$i>=$length){
  27.     return true;
  28.    }elseif(($str{$i}&"\xC0")=="\x80"){
  29.     if(++$i>=$length){
  30.      return true;
  31.     }elseif(($str{$i}&"\xC0")=="\x80"){
  32.      if(++$i>=$length)
  33.       return true;
  34.      elseif(($str{$i}&"\xC0")=="\x80")
  35.       continue;
  36.     }
  37.    }
  38.   }
  39.   return false;
  40. }
  41. return true;
  42. }
复制代码





欢迎光临 站长论坛 (http://tzlink.com/bbs/) Powered by Discuz! X3.2