Разница между функциями substr() и mb_substr() в PHP заключается в том, как они обрабатывают строки. 13
Substr() подходит для работы с однобайтовыми строками (например, US-ASCII, семейство ISO 8859 и т. д.). 3 Если в строке есть символы, содержащие больше одного байта, функция substr() возвращает недопустимое значение. 3
Mbsubstr() предназначен для работы с многобайтовыми строками (например, UTF-8, UTF-16 и т. д.). 3 В отличие от substr(), у mbsubstr() есть дополнительный аргумент — кодировка. 1
Таким образом, substr() используют в случаях, когда нужно работать с однобайтовыми строками, а mb_substr() — когда необходимо обрабатывать многобайтовые строки. 3