необходимо очистить текст от пустых (лишних) тегов HTML
Например есть текст:
<p>Стало</p><span></span><p></p>
<p> </p>
<p> </p>
<div></div>
<p><span></span></p>
<p><span>Стало:</span></p>
<p> </p>
<br><p> </p>
--------------------------------------------------------
> После обработки должно остаться:
<p>Было</p>
<span>Стало:</span>
--------------------------------------------------------
> Ну или хотя-бы вот так
<p>Стало</p>
<p><span>Стало:</span></p>
Пробовал делать через strip_tags и preg_replace но не получилось сделать
Можно сделать это при помощи рекурсии, использовать можно этот блок
public static function removeHTMLTagsWithNoContent($htmlBlob) {
$pattern = "/<[^\/>][^>]*><\/[^>]+>/";
if (preg_match($pattern, $htmlBlob) == 1) {
$htmlBlob = preg_replace($pattern, '', $htmlBlob);
return self::removeHTMLTagsWithNoContent($htmlBlob);
} else {
return $htmlBlob;
}
}
Использовать, пока будет обнаруживать пустые теги.
Так же можно через PHP 5.4
$oDOMHTML = DOMDocument::loadHTML(
$sYourHTMLString,
LIBXML_HTML_NOIMPLIED |
LIBXML_HTML_NODEFDTD |
LIBXML_NOBLANKS |
LIBXML_NOEMPTYTAG
);
$sYourHTMLStringWithoutEmptyTags = $oDOMHTML->saveXML();