Удалить форматирование TinyMCE из базы данных в PHP

Я гуглил об этом, и большинство из них касаются запрета TinyMCE вставлять стили Word, которые находятся в перспективе JavaScript.

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

Есть ли способ удалить все форматирование и оставить только текст с помощью PHP?

Некоторый образец текста:

&lt;!--  /* Font Definitions */  @font-face     {font-family:"Cambria Math";    panose-1:2 4 5 3 5 4 6 3 2 4;   mso-font-charset:1;     mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;    mso-font-signature:0 0 0 0 0 0;} @font-face     {font-family:Calibri;   panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;     mso-generic-font-family:swiss;  mso-font-pitch:variable;    mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal    {mso-style-unhide:no;   mso-style-qformat:yes;  mso-style-parent:"";    margin-top:0in;     margin-right:0in;   margin-bottom:10.0pt;   margin-left:0in;    line-height:115%;   mso-pagination:widow-orphan;    font-size:11.0pt;   font-family:"Calibri","sans-serif";     mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;   mso-fareast-font-family:Calibri;    mso-fareast-theme-font:minor-latin;     mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;   mso-bidi-font-family:"Times New Roman";     mso-bidi-theme-font:minor-bidi;     mso-fareast-language:EN-US;} .MsoChpDefault     {mso-style-type:export-only;    mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;   mso-fareast-font-family:Calibri;    mso-fareast-theme-font:minor-latin;     mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;   mso-bidi-font-family:"Times New Roman";     mso-bidi-theme-font:minor-bidi;     mso-fareast-language:EN-US;} .MsoPapDefault     {mso-style-type:export-only;    margin-bottom:10.0pt;   line-height:115%;} @page Section1   {size:8.5in 11.0in;     margin:1.0in 1.0in 1.0in 1.0in;     mso-header-margin:.5in;     mso-footer-margin:.5in;     mso-paper-source:0;} div.Section1   {page:Section1;} --&gt;   Blah blah blah blah blah &nbsp;    </p>

Примечание. Теги HTML хранятся в базе данных как объекты html (например, символ < хранится как &lt;).


person akhy    schedule 18.09.2012    source источник
comment
Вы пробовали: strip_tags(htmlspecialchars_decode( $text )); ?   -  person Green Black    schedule 18.09.2012
comment
@Джон, о, спасибо, это решило мою проблему .. Раньше я использовал strip_tags без htmlspecialchars_decode .. неудивительно, что это не сработало :)   -  person akhy    schedule 18.09.2012


Ответы (1)


Что вы хотите сделать, так это преобразовать HTML в обычный текст. Поскольку это в основном то, что вы получите от TinyMCE и что вы хотите вставить в базу данных.

Как уже упоминалось, самый простой способ сделать это — использовать strip_tags в функции htmlspecialchars_decode. Однако он удалит некоторую, возможно, важную информацию, например, элементы управления персоналом. Скорее всего, вы захотите использовать html2text, довольно простой в использовании класс с некоторыми дополнительными функциями, которые делают преобразование более точным.

Надеюсь, поможет!

person MarcinWolny    schedule 31.01.2013
comment
Это ваш продукт? Если это так, вы должны упомянуть об этом. Кроме того, это похоже на коммерческий продукт. - person John Dvorak; 31.01.2013
comment
Нет, это не так. Я просто наткнулся на него некоторое время назад и использовал его несколько раз. Вместо этого я дам ссылку на альтернативу, которая бесплатна для коммерческого использования (только что заметил, что в предыдущей библиотеке нет четкой ссылки для скачивания). - person MarcinWolny; 31.01.2013