Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Некорректная работа функции substr().
Покинул форум
Сообщений всего: 33
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
Доброе время суток! Столкнулся с такой проблемой: вывожу из БД (mysql) данные в раздел новости на сайте. В разделе анонс, хотел обрезать строку до 80 знаков функцией substr(). В итоге при выводе анонса выводится число знаков в 2 раза меньше и в конце строки появляется символ - знак вопроса в ромбике (какой иногда выводится из-за несоответствия кодировок). Кодировки базы и php-файлика UTF-8. Сам кусок кода, которым вывожу инфу:
Что то подсказывает, что с кодировками какая то бага... В чём тут может быть дело?Отредактировано модератором: Мелкий, 14 Февраля, 2014 - 16:04:49
Мелкий
Отправлено: 14 Февраля, 2014 - 16:05:42
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
substr оперирует байтами.
Вам нужна mb_substr
----- PostgreSQL DBA
Tyoma5891
Отправлено: 14 Февраля, 2014 - 16:10:23
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
mihon_kri пишет:
Доброе время суток! Столкнулся с такой проблемой: вывожу из БД (mysql) данные в раздел новости на сайте. В разделе анонс, хотел обрезать строку до 80 знаков функцией substr(). В итоге при выводе анонса выводится число знаков в 2 раза меньше и в конце строки появляется символ - знак вопроса в ромбике (какой иногда выводится из-за несоответствия кодировок). Кодировки базы и php-файлика UTF-8. Сам кусок кода, которым вывожу инфу:
Что то подсказывает, что с кодировками какая то бага... В чём тут может быть дело?
к тому же использование
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET 'UTF8'")
не имеет никакого смысла, корректнее работает изь этих двух только mysql_query("SET NAMES 'UTF8'");
mihon_kri
Отправлено: 15 Февраля, 2014 - 12:35:09
Новичок
Покинул форум
Сообщений всего: 33
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
Спасибо, в понедельник на работке попробую с mb_substr
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.