Проблема с кодировкой или strlen() не считает
Возникла такая загвоздка:
В переменной $a храниться значение "воды" (полученное из БД) echo strlen($a); Выведет на экран 5 ... а то и 6 Эту проблему решил так: echo mb_strlen($a); Выводит как положено 4. Но тут возникла необходимость воспользоваться следующим: Значения переменных: $s1="вхды" и $s2="воды" echo similar_text($s1, $s2); Выводит 6, а должно быть 3. Примечание: $s1 и $s2 получены из БД. PS, укажу максимум данных: в коде прописано: mb_internal_encoding('UTF-8'); setlocale(LC_ALL, 'ru_RU.UTF-8'); К БД подключаясь указываю такую кодировку: SET NAMES UTF8 В БД кодировка строк utf8_general_ci Кодировка файла со скриптом UTF-8 (без BOM) |
Работать с утф строками надо только через функции mb_ .
Но там есть аналоги не всем строковым функциям. Как например similar_text. Варианты: 1) поискать готовенькую реализацию этой функции 2) написать самому 3) для сравнения можно перекодировать в cp1251 функцией iconv и уже их сравнить через similar_text |
micscr,
Спасибо! |
Часовой пояс GMT +3, время: 01:27. |