function is_utf8($string) {
return preg_match('%^(?:
[x09x0Ax0Dx20-x7E] # ASCII
| [xC2-xDF]] xBF][xBF] # オーバーロングを除く
# サロゲートを除く
x90-xBF][x80-xBF]{2} 80-xBF] {2} # プレーン 16
)*$%xs' , $string);
}
精度は基本的に mb_detect_encoding と同じで、どちらも正しく、間違っている。
エンコーディング検出は 100% 正確であることはできませんが、これは基本的に要件を満たすことができます。
http://www.bkjia.com/PHPjc/319259.html
www.bkjia.com