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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
9
0
12 459
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

Спасибо, но ни один из них, похоже, не справляется с форматированием MS, что меня в первую очередь интересует. HTML Purifier запланировал его для версии 3.5, но с «необходимостью исследования».

da5id 19.12.2008 00:48

Затем я предлагаю вам переключиться на fckeditor, который может работать с вводом слов. Обновил свой ответ.

Eran Galperin 19.12.2008 02:02

Хм. Раньше я предпочитал TinyMCE FCKeditor по ряду других причин, но это может меня поколебать. Спасибо за совет и рад принять мой +1 :)

da5id 19.12.2008 02:19

Имейте в виду, (если я переключусь) мне все равно нужно вычистить всю ту хрень, которая была отправлена ​​уже ...

da5id 19.12.2008 02:21

Попробуйте предложения, отличные от PHP, по следующей ссылке - forum.devarticles.com/general-programming-help-4/…

Eran Galperin 19.12.2008 04:59

Также обратите внимание, что FCKEditor больше не поддерживается и будет иметь проблемы с современными браузерами, поэтому вместо этого вам следует использовать CKEditor. ckeditor.com

Kaivosukeltaja 20.03.2012 15:50

Замечу, что Tidy действительно справляется с форматированием MS и справляется с этим годами. Я использовал 4-5 лет назад для удаления вставленного содержимого MS Word ... tidy.sourceforge.net/docs/quickref.html#word-2000

Jon L. 13.04.2012 18:56

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

Другие вопросы по теме