strlen($text) || $byteStart > $byteEnd) { return false; } // Ensure we're not splitting a multi-byte character $before = substr($text, 0, $byteStart); $middle = substr($text, $byteStart, $byteEnd - $byteStart); $after = substr($text, $byteEnd); // Check if reconstructed string is valid UTF-8 return mb_check_encoding($before, 'UTF-8') && mb_check_encoding($middle, 'UTF-8') && mb_check_encoding($after, 'UTF-8'); } }