Как корректно форматировать html статью для публикации в telegram?
Пишу бота, который должен публиковать статьи в телеграм канал. В документации телеграма сказано, что для поста можно использовать весьма ограниченный набор html тегов и они дают вот такой пример:
<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<span class="tg-spoiler">spoiler</span>, <tg-spoiler>spoiler</tg-spoiler>
<b>bold <i>italic bold <s>italic bold strikethrough <span class="tg-spoiler">italic bold strikethrough spoiler</span></s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>
Но в исходнике статьи есть заголовки h1-h4, параграфы p, списки ul,ol,li и внутри figure еще img и видео в iframe.
Очевидно, чтобы показать картинки и видео их надо публиковать ботом как отдельные записи специальными методами, я могу получить регулярками их url и разбираться с ними отдельно.
Но есть ли способ нормально почистить остальной текст, при этом сохранив максимально много форматирования, насколько это возможно?
Мне не пришло ничего умнее в голову, чем:
$text = strip_tags($text, "<b><i><strong><em><ins><s><a><pre><code>");
Но хочется еще переносы строк, какую-то обработку списков и замену заголовков хотя бы на жирный текст с переносом строк вокруг. Может есть уже что-то вменяемое готовое по этому поводу?