Home  >  Article  >  Backend Development  >  5 ways to detect whether a string encoding is UTF8 in PHP

5 ways to detect whether a string encoding is UTF8 in PHP

WBOY
WBOYOriginal
2016-07-25 08:57:452332browse
  1. function mb_is_utf8($string)
  2. {
  3. return mb_detect_encoding($string, 'UTF-8') === 'UTF-8';//新发现
  4. }
复制代码

方法二:

  1. function preg_is_utf8($string)
  2. {
  3. return preg_match('/^.*$/u', $string) > 0;//preg_match('/^./u', $string)
  4. }
复制代码

方法三:

  1. function is_utf8_1($str)
  2. {
  3. $c=0; $b=0;
  4. $bits=0;
  5. $len=strlen($str);
  6. for($i=0; $i<$len; $i++){
  7. $c=ord($str[$i]);
  8. if($c > 128){ // bbs.it-home.org
  9. if(($c >= 254)) return false;
  10. elseif($c >= 252) $bits=6;
  11. elseif($c >= 248) $bits=5;
  12. elseif($c >= 240) $bits=4;
  13. elseif($c >= 224) $bits=3;
  14. elseif($c >= 192) $bits=2;
  15. else return false;
  16. if(($i+$bits) > $len) return false;
  17. while($bits > 1){
  18. $i++;
  19. $b=ord($str[$i]);
  20. if($b < 128 || $b > 191) return false;
  21. $bits--;
  22. }
  23. }
  24. }
  25. return true;
  26. }
复制代码

方法四:

  1. function is_utf8_2($string) {
  2. // From http://w3.org/International/questions/qa-forms-utf-8.html
  3. return preg_match('%^(?:
  4. [x09x0Ax0Dx20-x7E] # ASCII
  5. | [xC2-xDF][x80-xBF] # non-overlong 2-byte
  6. | xE0[xA0-xBF][x80-xBF] # excluding overlongs
  7. | [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte
  8. | xED[x80-x9F][x80-xBF] # excluding surrogates
  9. | xF0[x90-xBF][x80-xBF]{2} # planes 1-3
  10. | [xF1-xF3][x80-xBF]{3} # planes 4-15
  11. | xF4[x80-x8F][x80-xBF]{2} # plane 16
  12. )*$%xs', $string);
  13. } // function is_utf8
复制代码

方法五:

  1. function isUTF8($string)
  2. {
  3. return (utf8_encode(utf8_decode($string)) == $string);
  4. }
复制代码


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn