Собственно проблемы возникают из-за того, что, к примеру русские символы в кодировке UTF-8 занимают больше чем один байт. Соответственно, php-функции для работы с текстом (strlen(), strpos(), substr() … ) будут некорректно работать.
Решается эта проблема просто: в PHP есть встроенные мультибайтные аналоги строковым функциям. Эти функции отличаются от стандартных своим названием, каждое из которых начинается на префикс «mb_».
Пример: mb_strlen(), mb_strpos(), mb_substr() …
Также у каждой из этих функций есть дополнительный параметр, указывающий кодировку.
Пример:
$str = 'абв';
$len = strlen($str); // $len = 6
$len = mb_strlen($str);// $len = 6 !!!
$len = mb_strlen($str, 'UTF-8'); // $len = 3
Обратите внимание, на данный пример. Даже когда используется корректная функция, но кодировка не передана, то функция возвращает неверный результат.
Спасибо, помогло :-)
Да, отличное решение! Спасибо.