Я разработал анализатор HTML и пакет PHP фильтра, который можно использовать для этой цели.
Он состоит из набора классов, которые могут быть объединены в цепочку для выполнения ряда операций синтаксического анализа, фильтрации и преобразования в коде HTML / XML.
Он предназначен для работы со страницами реального мира, поэтому он может работать с искаженными тегами и структурами данных, поэтому он может сохранить как можно больше исходного документа.
Один из классов фильтров, с которыми он поставляется, может выполнять проверку DTD. Другой может отбросить небезопасные теги HTML и CSS, чтобы предотвратить атаки XSS. Другой может просто извлечь все ссылки на документы.
Все эти классы фильтров являются необязательными. Вы можете связать их вместе, как хотите, если они вообще нужны.
Итак, чтобы решить вашу проблему, я не думаю, что в PHP уже есть какое-то конкретное решение для этого, но для него может быть разработан специальный класс фильтров. Посмотрите на пакет. Это тщательно задокументировано.
Если вам нужна помощь, просто проверьте мой профиль и напишите мне, и я, возможно, даже разработаю фильтр, который будет делать именно то, что вам нужно, в конечном итоге вдохновленный любыми решениями, которые существуют для других языков.