Комментарии 7
И так, у клиента из 1С, в реквизитах товара, прилетает превью описание такого вида
Так в 1с это тоже как-то попадает. Скорее всего копипастой откуда-то в веб-редактор и прилетает все этой засорение стилями. Более того, такое состояние в 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

PHP HTML Cleaner: история разработки и обзор Composer-пакета для очистки HTML