Intereting Posts
Ошибка отображения IE в файле prototype.js. 1597 Определение различных переменных из таблицы базы данных SQL – лучшая практика? как загружать файл асинхронно с помощью JQuery «Неопределенная константа / переменная» Ошибка при использовании Laravel с угловым JS … Невозможно показать переменную в лезвии Не удается аутентификация Функция PHP для дезинфекции всех данных Ограничить выполнение скрипта PHP одним реферированием jQuery UI Datepicker реагирует только на первое текстовое поле Множественное сопоставление поискового слова с использованием strpos PHP – подсчет частоты значений массива расшифровать зашифрованный текст as3crypto в PHP XML-анализ синтаксического анализа данных SOAP: зарезервированное имя XML Удалять каждый второй элемент из массива и ключей перегруппировки? Проблема с PHP Integer PHP – добавьте одну неделю к указанной пользователем дате

PHP для очистки вставленного ввода Microsoft

У меня есть сайт, на котором пользователи могут публиковать материалы (как в форумах, комментариях и т. Д.), Используя индивидуальную реализацию TinyMCE. Многим из них нравится копировать и вставлять из Word, что означает, что их вход часто приходит с множеством связанных встроенных форматирования MS.

Я не могу просто избавиться от <span whatever> поскольку TinyMCE полагается на тег span для некоторого его форматирования, и я не могу (и не хочу) заставлять упомянутых пользователей использовать функцию «Вставить из слова» TinyMCE (что, похоже, не так хорошо работает).

Кто-нибудь знает библиотеку / класс / функцию, которая позаботится об этом для меня? Это должна быть общая проблема, хотя я не могу найти ничего определенного. Недавно я думал, что ряд регулярных выражений грубой силы, которые ищут шаблоны, специфичные для MS, может сделать трюк, но я не хочу переписывать то, что уже доступно, если только не нужно.

Кроме того, исправление фигурных кавычек, em-тире и т. Д. Было бы неплохо. У меня есть свой собственный материал, чтобы сделать это сейчас, но я бы просто хотел найти один фильтр MS-преобразования, чтобы управлять ими всеми.

HTML Purifier создаст стандартную совместимую разметку и отфильтрует множество возможных атак (например, XSS).

Для более быстрой очистки, не требующей фильтрации XSS, я использую расширение PECL Tidy, которое является привязкой для утилиты Tidy HTML .

Если вам это не поможет, я предлагаю вам переключиться на FCKEditor, у которого есть эта функция.

Веб-сайт http://word2cleanhtml.com/ делает хорошую работу по преобразованию из Word. Я использую его в PHP путем утилизации, для обработки некоторого устаревшего HTML, и до сих пор он работает очень хорошо (в результате получается очень чистый <p>, <b> код). Конечно, будучи внешним сервисом, нехорошо использовать его в онлайн-обработке, например, в вашем случае.

Если вы попробуете, и это приведет к 400 ошибкам, попробуйте сначала фильтровать HTML с помощью Tidy .

В моем случае была картина. Нежелательная часть всегда начиналась с

 <!-- [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, вы можете просто указать, что вам разрешены теги.