首页 > 上网技巧 > 电脑小技巧 > PHP判断字符串编码是否为utf-8

PHP判断字符串编码是否为utf-8

时间:2014-09-10 11:47 作者:QQ地带 我要评论

2008年弄的一个UTF-8判断函数有点问题,对于某些GBK编码汉字也会误认为是UTF-8,如“要”、“营业”等。
 
在网上又搜到一个据称完美的判断函数,希望是完美的!
 
 
  1. // Returns true if $string is valid UTF-8 and false otherwise. 
  2. function is_utf8($word
  3. if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true) 
  4. return true; 
  5. else 
  6. return false; 
  7. } // function is_utf8 
 
 
2008年4月30日写的函数(建议不要再用了):
 
 
  1. // Returns true if $string is valid UTF-8 and false otherwise. 
  2. function is_utf8($string) { 
  3.  
  4. // From http://w3.org/International/questions/qa-forms-utf-8.html 
  5. return preg_match('%^(?: 
  6. [x09x0Ax0Dx20-x7E] # ASCII 
  7. | [xC2-xDF][x80-xBF] # non-overlong 2-byte 
  8. | xE0[xA0-xBF][x80-xBF] # excluding overlongs 
  9. | [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte 
  10. | xED[x80-x9F][x80-xBF] # excluding surrogates 
  11. | xF0[x90-xBF][x80-xBF]{2} # planes 1-3 
  12. | [xF1-xF3][x80-xBF]{3} # planes 4-15 
  13. | xF4[x80-x8F][x80-xBF]{2} # plane 16 
  14. )*$%xs', $string); 
  15.  
  16. } // function is_utf8 

标签: php 编码
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告