Я получаю текст UTF8 из базы данных, и я хочу показать только первые $ len символы (заканчивая словом). Я попробовал несколько вариантов, но функция по-прежнему не работает из-за специальных символов (á, é, í, ó и т. Д.).Вырезать текст UTF8 в PHP
Спасибо за помощь!
function text_limit($text, $len, $end='...')
{
mb_internal_encoding('UTF-8');
if((mb_strlen($text, 'UTF-8') > $len)) {
$text = mb_substr($text, 0, $len, 'UTF-8');
$text = mb_substr($text, 0, mb_strrpos($text," ", 'UTF-8'), 'UTF-8');
...
}
}
Редактировать добавить пример
Если я укоротить текст с 65 символов, он возвращает:
Un jardín де Estilo neoclásico acorde кон-эль ...
Если я меняю специальные символы (í, á), то он возвращает:
Un Jardin De Estilo neoclasico acorde против Эль Паласио де ...
Я уверен, что есть что-то странное с кодировкой или сервера, или PHP; но я не могу понять это! Благодаря!
Окончательное решение
Я использую этот UTF8 PHP library и все работает теперь ...
И если вы не используете text_limit, тогда кодирование не создает проблем, верно? –
текст отображается без проблем. Проблема возникает, когда я вырезал ее, что эти специальные символы занимают несколько байтов, поэтому text_limit() возвращает очень короткую строку. – fesja
Возможный дубликат [Обрезать многобайтовую строку на n символов] (http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars) – Gordon