Обновить

Комментарии 7

И так, у клиента из 1С, в реквизитах товара, прилетает превью описание такого вида

Так в 1с это тоже как-то попадает. Скорее всего копипастой откуда-то в веб-редактор и прилетает все этой засорение стилями. Более того, такое состояние в 1с тоже никому не нужно.
По-хорошему, логичнее было бы фильтровать прям на этом вводе. Тогда

  1. обе связанные системы (1с и сайт) будут оперировать максимально чистыми данными

  2. логика отображения информации из одной системы в другую упрощается => существенно проще поддерживать и отлаживать ошибки.

  3. перед нами есть пользователь в момент ввода. А значит ему можно что-то показать (вдруг там неожиданные данные внутри, например, ворох таблиц). Тогда как в вашем подходе - это скорее всего автоматическая загрузка, показывать ошибку там некому и уж точно нельзя останавливаться.

Как клиент говорил - так у них в 1С (я решил не допытываться). Я полностью согласен что по хорошему на стороне 1С это сделать. Но имеем что имеем :)

А что будет с невалидным HTML (незакрытые тэги, кастомные, etc..)?

Хорошее замечание! По логике, кастомные он пропустит, если вы не укажите их убрать или модифицировать. Но в новом релизе я добавлю обработку незакрытых тегов!

Сделал тесты. В исходном html не хватает закрывающегося </span> - автоматически закрылся после TextNode (Hello).

$html = '<div><span class="child">Hello</div><p><span>World</span></p>';
$result = HtmlCleaner::make()->clean($html);

// <div><span class="child">Hello</span></div><p><span>World</span></p>

Это то о чем вы спрашивали?

Я не понял, готовые решения есть? Кажется что не может не быть. Тема не такая уж и редкая.

Есть конечно) об этом и статья:) может тема и не редкая, но все что есть в интернете мне не подходило.

composer require mb4it/htmlcleaner

Вот репозиторий - https://github.com/Dictator90/mb-htmlcleaner

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации