Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как убрать пустые теги html c помощью PHP

необходимо очистить текст от пустых (лишних) тегов 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 но не получилось сделать

HtmlСкриптыPhp
Максим З.
  · 1,0 K
Имею естественно научное образование, в юношестве прикипел к литературе, сейчас активно...  · 28 янв 2019

Можно сделать это при помощи рекурсии, использовать можно этот блок

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();