This code
print mb_substr('éxxx', 0, 1);
prints an empty space :(
It is supposed to print the first character, é. This seems to work however:
print mb_substr('éxxx', 0, 2);
But it's not right, because (0, 2) means 2 characters...
Try passing the encoding parameter to mb_substr, as such:
print mb_substr('éxxx', 0, 1, 'utf-8');
The encoding is never detected automatically.
mb_detect_encoding to actually try to detect the encoding?mb_internal_encoding instead of passing "utf-8" to all mb_* functions? Just like Álvaro G. Vicario has pointed out