Использование PHP substr () и strip_tags () с сохранением форматирования и без нарушения HTML

У меня есть различные строки HTML, которые можно вырезать до 100 символов (из разборного контента, а не из оригинала) без разметки тегов и без разрыва HTML.

Исходная HTML-строка (288 символов):

$content = "<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the air
<span>everywhere</span>, it's a HTML taggy kind of day.</strong></div>";

Стандартная отделка: Обрезать до 100 символов и HTML-разрывы, разделенный контент доходит до ~ 40 символов:

$content = substr($content, 0, 100)."..."; /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove... */

Раздетый HTML: Выводит правильное количество символов, но явно теряет форматирование:

$content = substr(strip_tags($content)), 0, 100)."..."; /* output:
With a span over here and a nested div over there and a lot of other nested
texts and tags in the ai... */

Частичное решение: использование HTML Tidy или очистителя для закрытия тегов выводит чистый HTML, но 100 символов HTML не отображаются.

$content = substr($content, 0, 100)."...";
$tidy = new tidy; $tidy->parseString($content); $tidy->cleanRepair(); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div ove</div></div>... */

Вызов: Для вывода чистого HTML иn символы (исключая количество символов элементов HTML):

$content = cutHTML($content, 100); /* output:
<div>With a <span class='spanClass'>span over here</span> and a
<div class='divClass'>nested div over <div class='nestedDivClass'>there</div>
</div> and a lot of other nested <strong><em>texts</em> and tags in the
ai</strong></div>...";

Подобные вопросы

Как обрезать фрагменты HTML, не разбивая тегиОбрезка строк HTML без разрыва тегов HTML

Ответы на вопрос(10)

Ваш ответ на вопрос