27.10.2008
Для обрезания длинных строк в данном продукте используется функция [b]substr()[/b], которая не умеет корректно работать с UTF-8 строками. В итоге получается: во-первых - в конце обрезанной строки символ '?' (пример на картинке); [img size=243]http://www.vtiger.ru/components/com_joomlaboard/uploaded/images/substr081027.jpg[/img] во-вторых - если такое подрезание происходит в определённых полях, то в некоторых случаях, не удаётся выбрать данную запись в формах создания события или задачи. Для решения данной проблемы можно использовать функцию [b]mb_substr()[/b], которая как раз корректно работает с кодировкой UTF-8. Для этого необходимо поставить соответствующее расширение для PHP - [b]mbstring[/b]. И в файле конфигурации PHP [b]php.ini[/b] добавляем: [code:1]... extension=php_mbstring.dll ... [mbstring] mbstring.language = Neutral mbstring.internal_encoding = UTF-8 mbstring.http_input = UTF-8 mbstring.http_output = UTF-8 ... [/code:1] Далее можно править файлы, заменяя функцию substr() на mb_substr() Данный пример [b]для версии 5.0.4[/b] 1. Исправление для списков контактов Ищем строку в конце файла "/include/utils/[b]ListViewUtils.php[/b]", функция textlength_check() [code:1]$temp_val = substr(preg_replace("/(</?)(w+)([^>]*>«»)/i","",$field_val),0,$listview_max_textlength).'...';[/code:1] и меняем в ней функцию substr() на mb_substr(), получается [code:1]$temp_val = mb_substr(preg_replace("/(</?)(w+)([^>]*>«»)/i","",$field_val),0,$listview_max_textlength).'...'; [/code:1] 2. Исправление для календаря файл "/modules/Calendar/[b]calendarLayout.php[/b]", функция getEventLis(), строка [code:1]$subject = substr($subject,0,$listview_max_textlength)."...";[/code:1] также меняем на mb_substr Сообщение отредактировано: alex_olt, в: 2008/10/27 09:00

Сообщение отредактировано: alex_olt, в: 2008/10/27 09:01
28.10.2008
В процессе выяснилось, что для корректной работы функции сокращения длиных строк (в части определения длины строки) необходимо вместе с заменой функции [b]substr()[/b] менять и функцию [b]strlen()[/b] на [b]mb_strlen()[/b], которая находится выше, в проверке условия.
30.10.2008
Спасибо. Тоже этим вопросом задавался.
Текст сообщения: