Очиститель HTML сохраняет пробелы

Есть ли какой-нибудь способ заставить HTML Purifier сохранять пробелы, которые обычно можно увидеть в визуализированном HTML?

Например, вы обычно ожидаете пробел между Foo а также Bar в следующих случаях:

Foo<br/>Bar

Пример 1

<div>Foo</div><div>Bar</div>

Пример 2

4

Решение

У меня есть жестокий план — заменить любой тег, закрывающий «>» на пробел, и убрать двойные пробелы

<?php
$text = '<div>test</div><div>me</div>';

$text = preg_replace('/(<\/[a-z]+>)/', '$1 ', $text);
$text = trim(preg_replace('/\s+/', ' ', strip_tags($text)));

var_dump($text);

Возвращает

string(7) "test me"
1

Другие решения

Похоже, HTMLPurifier не удаляет пробелы, он удаляет все теги вместе, потому что не распознает их (что странно).

В отношении Foo<br/>Bar

  • Error Line 1, Column 3: Unrecognized <br /> tag removed

В отношении <div>Foo</div><div>Bar</div>

  • Error Line 1, Column 0: Unrecognized <div> tag removed
  • Error Line 1, Column 8: Unrecognized </div> tag removed
  • Error Line 1, Column 14: Unrecognized <div> tag removed
  • Error Line 1, Column 22: Unrecognized </div> tag removed

Вы можете увидеть это, включив CollectErrors в Live Demo.

введите описание изображения здесь

Может быть, попробуйте div, а также br: http://htmlpurifier.org/live/configdoc/plain.html#HTML.AllowedElements

Вот результаты из Live Demo:


введите описание изображения здесь

1

По вопросам рекламы [email protected]