>  기사  >  백엔드 개발  >  PHP에서 문자열 인코딩이 UTF8인지 확인하는 5가지 방법

PHP에서 문자열 인코딩이 UTF8인지 확인하는 5가지 방법

WBOY
WBOY원래의
2016-07-25 08:57:452332검색
  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. }
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.