Here is an example with UTF8 characters, to see how the start and length arguments are working: $str_utf8 = utf8_encode("Déjà_vu"); $str_utf8_0 = mb_strcut($str_utf8, 0, 4, "UTF-8"); // Déj $str_utf8_1 = mb_strcut($str_utf8, 1, 4, "UTF-8"); // éj $str_utf8_2 = mb_strcut($str_utf8, 2, 4, "UTF-8"); // éj $str_utf8_3 = mb_strcut($str_utf8, 3, 4, "UTF-8"); // jà_ $str_utf8_4 = mb_strcut($str_utf8, 4, 4, "UTF-8"); // à_vThe string includes two special charaters, "é" and "à" internally coded with two bytes.Note that a multibyte character is removed rather than kept in half at the end of the output.Note also that the result is the same for a cut 1,4 and a cut 2,4 with this string.