Руководство по PHP говорит
5.3.4 strip_tags () больше не удаляет самозакрывающиеся теги XHTML, если только самозакрывающийся тег XHTML также не указан в allowable_tags.
Но когда я делаю это (5.5):
$text = "<base/><br/>World<hr><input/>";
echo strip_tags($text);
Выход World
то есть он сам удаляет закрывающие теги XHTML.
Документы в этом случае просто неверны.
strip_tags()
без каких-либо разрешенных тегов полоски самозакрывающихся тегов просто отлично. Однако изменилось то, что с> = 5.3.4 самозакрывающиеся теги игнорируются:
$string = "foo<br>bar<br/>baz<br />\r\n";
echo strip_tags($string); // foobarbaz
echo strip_tags($string, '<br>'); // foo<br>bar<br/>baz<br />
echo strip_tags($string, '<br/>'); // foobarbaz
echo strip_tags($string, '<br />'); // foobarbaz
echo strip_tags($string, '<br><br/>'); // foo<br>bar<br/>baz<br/>
Я создал ошибку чтобы исправить это в документах.
документы обновляются отражать фактическое правильное поведение.
Однако тот факт, что самозакрывающиеся и «нормальные» теги должны быть определены отдельно, сначала кажется мне странным, поэтому может быть это также должно быть исправлено.
При чтении оригинала сообщение об ошибке мне не совсем ясно, что было исправлено и каков будет ожидаемый результат, поэтому мне нужно немного подробнее разобраться.
Мое первоначальное предположение, что должны быть добавлены как самозакрывающиеся, так и несамозакрывающиеся теги, было неверным.
Других решений пока нет …