$str
と仮定します UTF-8でエンコードされています:
function maxThreeBytes($str) {
return preg_match('@[\\xf0-\\xff][\\x80-\\xff][\\x80-\\xff][\\x80-\\xff]@', $str) ? false : true;
}
文字列に11110xxxb 10xxxxxxb 10xxxxxxb 10xxxxxxb
に一致する4文字が含まれているかどうかを確認します これは、U+10000とU+10FFFFの間の文字のエンコーディングです。