Я пытаюсь разобрать некоторые фрагменты HTML и хочу очистить их по разным причинам (XSS и др.).
В настоящее время я пытаюсь удалить все атрибуты любого тега, кроме href на привязке. Я делаю это, используя последовательность вызовов eregi_replace, но я уверен, что есть более разумный способ сделать это, используя preg_replace и всего несколько строк кода, но я не смог заставить его работать. Кто-нибудь может помочь?
Текущий код:
$data_item = eregi_replace("<p[^>]*>","<p>", $data_item);
$data_item = eregi_replace("<h2[^>]*>","<h2>", $data_item);
$data_item = eregi_replace("<h3[^>]*>","<h3>", $data_item);
$data_item = eregi_replace("<h4[^>]*>","<h4>", $data_item);
$data_item = eregi_replace("<h5[^>]*>","<h5>", $data_item);
$data_item = eregi_replace("<h6[^>]*>","<h6>", $data_item);
$data_item = eregi_replace("<ul[^>]*>","<ul>", $data_item);
$data_item = eregi_replace("<ol[^>]*>","<ol>", $data_item);
$data_item = eregi_replace("<li[^>]*>","<li>", $data_item);
$data_item = preg_replace("/<a([^>]*)( href=\S+)([^>]*)>/i", '<a$2 rel="nofollow">', $data_item);
(мне нужно только проанализировать подмножество тегов HTML, так как до этого я удаляю все нежелательные).