1 //参考 http://w3.org/International/questions/qa-forms-utf-8.html
2 function is_utf8($string) {
3 return preg_match('%^(?:
4 [\x09\x0A\x0D\x20-\x7E] // ASCII
5 | [\xC2-\xDF][\x80-\xBF] // non-overlong 2-byte
6 | \xE0[\xA0-\xBF][\x80-\xBF] // excluding overlongs
7 | [\xE1-\xEC\xEE\xEF][\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 }