Сократите текст UTF8 в PHP

Я получаю текст UTF8 от базы данных, и я хочу показать только первые символы $len (заканчивающийся, одним словом). Я попробовал несколько опций, но функция все еще не работает из-за специальных символов (á, é, í, ó, и т.д.).

Спасибо за справку!

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 de estilo neoclásico acorde el …

Если я изменяю специальные символы (í, á), то это возвращается:

Довод "против" Un jardin de estilo neoclasico acorde el Palacio de …

Я уверен, что существует что-то странное с кодированием или сервером или php; но я не могу понять это!Спасибо!

Конечное решение

Я пользуюсь этой библиотекой UTF8 PHP, и все работает теперь...

5
задан hippietrail 24 April 2011 в 20:38
поделиться