У меня есть сайт, на котором пользователи могут публиковать материалы (например, на форумах, в комментариях и т. д.), Используя настроенную реализацию TinyMCE. Многие из них любят копировать и вставлять из Word, что означает, что их ввод часто сопровождается множеством связанного встроенного форматирования MS.
Я не могу просто избавиться от <span whatever>, поскольку TinyMCE полагается на тег span для некоторого форматирования, и я не могу (и не хочу) заставить указанных пользователей использовать функцию TinyMCE «Вставить из Word» (которая не в любом случае, похоже, не работает так хорошо).
Кто-нибудь знает библиотеку / класс / функцию, которая позаботится об этом за меня? Это, должно быть, обычная проблема, хотя я не могу найти ничего определенного. Недавно я подумал, что серия регулярных выражений методом перебора, которые ищут шаблоны, специфичные для MS, могут помочь, но я не хочу переписывать то, что может быть уже доступно, если я не должен.
Также было бы хорошо исправить фигурные кавычки, длинное тире и т. д. У меня есть свои собственные средства для этого, но я бы очень хотел найти один фильтр преобразования MS, чтобы управлять ими всеми.






Очиститель HTML создаст соответствующую стандартам разметку и отфильтрует множество возможных атак (например, XSS).
Для более быстрой очистки, не требующей фильтрации XSS, я использую расширение PECL Аккуратный, которое является привязкой для утилиты Чистый HTML.
Если это вам не поможет, я предлагаю вам переключиться на FCKEditor, в котором есть эта функция встроенный.
Затем я предлагаю вам переключиться на fckeditor, который может работать с вводом слов. Обновил свой ответ.
Хм. Раньше я предпочитал TinyMCE FCKeditor по ряду других причин, но это может меня поколебать. Спасибо за совет и рад принять мой +1 :)
Имейте в виду, (если я переключусь) мне все равно нужно вычистить всю ту хрень, которая была отправлена уже ...
Попробуйте предложения, отличные от PHP, по следующей ссылке - forum.devarticles.com/general-programming-help-4/…
Также обратите внимание, что FCKEditor больше не поддерживается и будет иметь проблемы с современными браузерами, поэтому вместо этого вам следует использовать CKEditor. ckeditor.com
Замечу, что Tidy действительно справляется с форматированием MS и справляется с этим годами. Я использовал 4-5 лет назад для удаления вставленного содержимого MS Word ... tidy.sourceforge.net/docs/quickref.html#word-2000
Сайт http://word2cleanhtml.com/ отлично справляется с конвертированием из Word. Я использую его в PHP для обработки устаревшего HTML, и до сих пор он работает довольно хорошо (результат - очень чистый код <p>, <b>). Конечно, будучи внешней службой, нецелесообразно использовать ее в онлайн-обработке, как в вашем случае.
Если вы попробуете это, и это принесет много 400 ошибок, попробуйте сначала отфильтровать HTML с помощью Аккуратный.
В моем случае была закономерность. Нежелательная часть всегда начиналась с
<!-- [if gte mso 9]>
и закончился
<![endif]-->
Итак, моим решением было вырезать все до и после этого блока:
$array = explode("<!-", $string, 2);
$begin = $array[0];
$end=substr(strrchr($string,'[endif]-->'),10);
echo $begin.$end;
В моем случае это сработало нормально:
$text = strip_tags($text, '<p><a><em><span>');
Вместо того, чтобы пытаться вытащить ненужные вам вещи, например, встроенное слово xml, вы можете просто указать разрешенные вам теги.
Спасибо, но ни один из них, похоже, не справляется с форматированием MS, что меня в первую очередь интересует. HTML Purifier запланировал его для версии 3.5, но с «необходимостью исследования».