ホームページ  >  記事  >  バックエンド開発  >  PHP で文字列エンコーディングが UTF8 かどうかを検出する 5 つの方法

PHP で文字列エンコーディングが UTF8 かどうかを検出する 5 つの方法

WBOY
WBOYオリジナル
2016-07-25 08:57:452330ブラウズ
  1. FunctionMB_IS_UTF8($ STRING)
  2. {
  3. mb_detect_encoding($ string、 'utf-8')=== 'utf-8'; //新新}二:

function preg_is_utf8($string)

{
return preg_match('/^.*$/u', $string) > 0;//preg_match('/^./u', $string)
}
  1. 复制代
  2. 方法三:

関数 is_utf8_1($str)

{
$c=0; $b=0;
$ビット=0;
    $len=strlen($str);
  1. for($i=0; $i $c=ord($str[$i]);
  2. if($c > 128){ // bbs.it-home.org
  3. if(($c >= 254)) return false;
  4. elseif($c >= 252) $bits=6;
  5. elseif($c >= 248) $bits=5;
  6. elseif($c >= 240) $bits=4;
  7. elseif($c >= 224) $bits=3;
  8. elseif($c >= 192) $bits=2;
  9. それ以外の場合は false を返します。
  10. if(($i+$bits) > $len) false を返します。
  11. while($bits > 1){
  12. $i++;
  13. $b=ord($str[$i]);
  14. if($b 191) false を返します。
  15. $bits--;
  16. }
  17. }
  18. }
  19. true を返します。
  20. }
  21. 复制代
  22. 方法四:

function is_utf8_2($string) {

// http://w3.org/International/questions/qa-forms-utf-8.html より
return preg_match('%^(?:
    [x09x0Ax0Dx20-x7E] # ASCII
  1. | [xC2-xDF][x80-xBF] # 過長でない 2 バイト
  2. | [xE1-xECxEExEF] x80-xBF]{2} # ストレート 3 バイト
  3. | xED[x80-x9F][x80-xBF] # サロゲートを除く
  4. xF0[x90-xBF][x80-xBF]{2} # プレーン 1 ~ 3
  5. | | [xF1-xF3][x80-xBF]{3} # プレーン 4 ~ 15
  6. xF4[x80-x8F][x80-xBF]{2} # プレーン 16
  7. )*$%xs', $string);
  8. } // function is_utf8
  9. 复制代コード
  10. 方法五:
関数 isUTF8($string)

{

return (utf8_encode(utf8_decode($string)) == $string);
}
  1. 复制代
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。