Я хочу удалить неподдерживаемые теги HTML, вставленные пользователями (система определяет, какой тег поддерживается), пример системы поддерживает только тег " div ":
<div><span>Hello</span> <span>World</span></div>
преобразуется в:
<div>Hello World</div>
Это мой код с простым HTML DOM:
function main()
{
$content = '<div><span>Hello</span> <span>World</span></div>';
$html = str_get_html($content);
$html = htmlParser($html);
}
function htmlParser($html)
{
$supportedTags = ['div'];
foreach ($html->childNodes() as $node) {
// Remove unsupported tags
if (!in_array($node->tag, $supportedTags)) {
$node->parent()->innertext = str_replace($node->outertext, $node->innertext, $node->parent()->innertext);
$node->outertext = '';
}
if ($node->childNodes()) {
htmlParser($node);
}
}
return $html;
}
Но что-то не так, если они содержат несколько вложенных неподдерживаемых тегов, например:
<div><span>Hello</span> <span>World</span> <span><b>!!</b></span></div>
будет преобразовано в
<div>Hello World <b>!!</b></div>
но ожидаемый результат
<div>Hello World !!</div>
Какое решение? Стоит ли продолжать использовать Simple HTML DOM или найти другой способ решения этой проблемы?
Спасибо за продвинутое решение моей проблемы.