Количество символов. Обрезка текста в PHP
Здравствуйте.
Есть проблема с одной темой для WP.
Почему-то в некоторых функциях темы (слайдер, некоторые разделы с фиксированными блоками для текста), количество вводимого текста ограничено. Причем есть разница в ограничение для кириллических символов и латинских. Так, например, латиницы выводит на экран до 93 символов, а кириллических всего 40. Подскажите, где искать проблему?
Искать проблему в файлах темы
Найдите функцию, которая обрезает текст - а дальше уже и сами поймете.
Как правильно заметил stepan вам нужно найти функцию которая обрезает текст. Далее, замените в ней PHP функции
strlen()
,substr()
наmb_substr()
,mb_strlen()
.Вот пример обрезки строки:
Дело тут в том, что кириллические символы имеют больший размер в байтах, чем латиница. А стандартные функции обрезки PHP, типа strlen() режут по размеру, а не по символам... При такой обрезке кириллических символов, почти всегда в конце появляется непонятный знак: вопрос в ромбике - �
И еще...
Функции
mb_*
не всегда работают, потому что MD расширение PHP устанавливается отдельно. Если у вас они не будут работать, то используйте стандартные функции, понимающие кодировку:iconv_strlen()
,iconv_substr()
- для них желательно указать кодировку 'utf-8'. Для функцийmb_*
кодировку указывать не обязательно.И еще
mb_*
работает на порядок быстрее, чемiconv_*
.В WP определены
mb_*
функции на случай, если не установлено PHP расширение , так что их спокойно можно использовать в коде.