Но бывает так, что надо вывести цитату определенной длины, не потеряв при этом форматирование.
Но при попытке сохранить форматирование, обрезав контент, мы также обрезаем теги и получаем в итоге "кашу" на странице.
Для решения проблемы нам надо закрыть все теги для обрезанного контента.
К счастью php, начиная с версии 5,4 поддерживает Tidy HTML - утилиту для очистки и восстановления HTML.
$tidy_config = array(
'char-encoding' => 'utf8',
'clean' => true,
'output-html' => true,
'input-html' => true,
'wrap-attributes' => true,
'wrap-php' => false,
'wrap' => 0);
// закрываем открытые html tags
$tidy = tidy_parse_string($out, $tidy_config, 'UTF8');
$tidy->cleanRepair();
$out = $tidy;
Вот окончательная функция для получения корректной цитаты с сохранением форматирования.
За основу я взял скрипт с сайта wp-kama.ru