Asumiendo que $str
está codificado en UTF-8:
function maxThreeBytes($str) {
return preg_match('@[\\xf0-\\xff][\\x80-\\xff][\\x80-\\xff][\\x80-\\xff]@', $str) ? false : true;
}
Comprueba si la cadena contiene cuatro caracteres que coinciden con 11110xxxb 10xxxxxxb 10xxxxxxb 10xxxxxxb
que es la codificación de caracteres entre U+10000 y U+10FFFF.