Я пытаюсь очистить некоторый устаревший контент в моей CMS, чтобы унифицировать способ использования тегов, я хотел начать с изображений, но столкнулся с некоторыми проблемами.
Содержимое в тегах изображений, таких как alt, srcset, sizes, ... не всегда используются, и когда они используются, они не всегда используются в одном и том же порядке.Я пытался очистить мой код под двумя разными углами:
- Разбор HTML
Я пробовал PHP простой HTML-код dom и альтернативу через PHP с помощью следующего кода: (этопросто пример, я не хочу, чтобы класс был установлен на «blabla»)
$dom = new DOMDocument;
$dom->loadHTML($html);
$images = $dom->getElementsByTagName('img');
foreach ($images as $image)
{
$image->setAttribute('class', 'blabla');
}
$html = $dom->saveHTML();
Когда я делаю это, классы изображений корректно адаптируются, но многие DIV в $ html исчезли, а я нетмодифицировал их.Первоначально у меня было что-то вроде этого:
<section id="mysection">
<div class="mydiv">test</div>
<section>
, и я в итоге получаю следующее:
<section id="mysection">
test
<section>
Поскольку этот первый метод фактически ухудшил мою проблему, я попытался работать с REGEX.
REGEX
Я пошел простым путем, используя следующую схему: /<img(.*)>/
, а затем я взорвал бы результат, чтобы идентифицировать все теги внутри img.Проблема, с которой я столкнулся, заключается в том, что REGEX проигнорировал окончание >
выражения и в итоге взял много нежелательного HTML-кода.Он должен остановиться при первом появлении >
, но я не знаю, как это сделать.
Я полагаю, что синтаксический анализ html должен быть предпочтительным методом для такого рода операций, но синтаксический анализ разрушает мой код.
У вас есть представление о том, какой метод мне следует использовать для решения этой проблемы?