PHP: Проблемы при работе с русским текстом, и как их решить

2011-01-11

Собственно проблемы возникают из-за того, что, к примеру русские символы в кодировке 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

Обратите внимание, на данный пример. Даже когда используется корректная функция, но кодировка не передана, то функция возвращает неверный результат.



2 комментария на «PHP: Проблемы при работе с русским текстом, и как их решить»

  1. Дмитрий:

    Спасибо, помогло :-)

  2. Андрей:

    Да, отличное решение! Спасибо.

Добавить комментарий