Каков наилучший способ удалить неправильный тег?Лучший способ удалить неправильные теги из строки
Tag неправильно, если он содержится в том же теге
Например, эта линия
<q>+7</q> (<q><q>9</q>6</q><q>2</q>) <q>9</q><q>3</q><q>7</q> <q>4</q><q>2 2</q><q>4</q>
После удаления неправильных тегов:
<q>7</q> (<q>96</q><q>2</q>) <q>9</q><q>3</q><q>7</q> <q>4</q><q>2 2</q><q>4</q>
Больше, чем этот простой пример:
До:
<p>bla-bla <p>bla-bla</p> bla-bla</p>
После:
<p>bla-bla bla-bla bla-bla</p>
Возможно, вы должны указать http://htmlpurifier.org/. – jeroen
Вы должны использовать синтаксический анализатор XML (в PHP у вас есть [DOMDocument] (http://php.net/dom)), если * неверно * вы имеете в виду * неправильно в соответствии со спецификацией X/HTML *. – Sherif
Кроме того, для того, что стоит любой совместимый анализатор XML, эти теги будут приниматься. Он просто не будет делать с этим то, что вы ожидаете, потому что такие языки, как HTML, непродуманны по дизайну. Согласно спецификации, '
Foo бара
Баз' только приведет 'обув
бара
База'. Он предполагает, что то, что вы * подразумевали *, было закрыто первым абзацем абзаца перед тем, как открыть новый. Так оно и делает для вас неявно. – Sherif