Intereting Posts
Вызов функции-члена getAction () для объекта без объекта Многие строки базы данных против одной строки разделенных запятыми строк захват URL-адреса видеоролика с curl или get_video_info POST XML для URL с PHP и обработкой ответа Самый быстрый способ добавить префикс в ключи массива? загрузка видео в папку и ее ссылку на базу данных с использованием php Удаление файлов cookie в других поддоменах Пароль не совпадает после шифрования с использованием функций crypt () и password_hash () «@ / Path / to / a / file» в PHP, что это значит? PHP включает в себя пробел в верхней части страницы Как вызвать функции PHP из функции JavaScript для доступа к базе данных Использовать переменную в heredoc в PHP (практика SQL) Имеет ли много аргументов if ухудшение скорости рендеринга php? Каков наилучший способ обработки загруженных текстовых файлов с различными кодировками? Как быстро выбрать 3 случайные записи из таблицы 30k MySQL с фильтром где-то одним запросом?

PHP mb_substr () работает неправильно?

Этот код

print mb_substr('éxxx', 0, 1);

печатает пустое пространство 🙁

Предполагается напечатать первый символ, é . Это, похоже, работает:

print mb_substr('éxxx', 0, 2);

Но это неправильно, потому что (0, 2) означает 2 символа …

Попробуйте передать параметр кодирования mb_substr, как таковой:

 print mb_substr('éxxx', 0, 1, 'utf-8'); 

Кодирование никогда не обнаруживается автоматически.

На практике я обнаружил, что в некоторых системах многобайтовые функции по умолчанию соответствуют стандарту ISO-8859-1 для внутренней кодировки. Это эффективно разрушает их способность обрабатывать многобайтовый текст.

Установка хорошего значения по умолчанию, вероятно, исправит это и некоторые другие проблемы:

 mb_internal_encoding('UTF-8');