Преобразование документа Word в полезный HTML в PHP

У меня есть набор документов Word, которые я хочу опубликовать, используя инструмент PHP, который я написал. Я копирую и вставляю документы Word в текстовое поле, а затем сохраняю их в MySQL с помощью программы PHP. Проблема I Have возникает из всех нестандартных символов, которые имеют документы Word, например, курсивные кавычки и эллипсы («…»). То, что я делаю в данный момент, – это поиск и замену таких вещей вручную (а также внешние символы, такие как e-sharp) с помощью простого текста или HTML-объектов (& eacute и т. Д.). Есть ли функция в PHP, которую я могу назвать, вывод документа Word и преобразование всего, что должно быть сущностями в сущности, и другие символы, которые не отображаются должным образом в Firefox в отображаемые символы.

Благодаря!

Лучшим решением было бы обеспечить настройку базы данных для поддержки символов UTF-8. Дополнительные символы, доступные в расширенном наборе, должны охватывать все «нестандартные» символы, о которых вы говорите.

В противном случае, если вы действительно должны преобразовать эти символы в объекты HTML, используйте htmlentities () .

Это хорошо послужило мне в прошлом:

$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8') 

Я думаю, что все эти ответы упускают один важный момент. В самой Windows используется атрибут windows latin1, поэтому, если вы вставляете некоторые специальные символы (например, асимметричные кавычки) в форму на машине Windows и отправляются в ящик unix (или что-то не-muckrosoft) (будь то в базу данных или что-то еще) некоторые из персонажей не соответствуют всем, что понимает система unix, отсюда и запутанные и искаженные символы. Это означает, что даже если у вас есть база данных UTF-8 и вы используете htmlentities, некоторые гадости все еще будут проходить, потому что они являются символами, которые ОС не распознает – они даже не являются частью UTF-8 – являются изобретениями, основанными только на Майкрософт. Мне бы хотелось узнать о гладком решении – то, что я делаю, – это черный список персонажей кодов символов только для Microsoft, с которыми я столкнулся с (также ручным) списком символов UTF-8, сделайте str_replace для всех этих и ТОГДА вы можете делать с ними все, что хотите, – iconv, htmlentities, сохраняйте прямо в базе данных utf8, это уже не имеет значения.

Я понимаю, что все это немного шатко – посмотрите http://www.cs.tut.fi/~jkorpela/www/windows-chars.html за отличное объяснение, которое я изучил в короткой форме выше. – Если у кого-то есть лучшее решение (конечно, есть один!) О том, как объяснить, что эта статья объясняет … Я бы с удовольствием это услышал!

htmlspecialchars () доставит вам долгий путь, но будьте осторожны, потому что документы Word грязны.

Вот решение, которое я приготовил для проблемы с не переносимым набором символов Windows. Это заменяет оскорбительные символы почти латинского-1 их эквивалентными объектами HTML.

 $translation=array( // reference from http://www.cs.tut.fi/~jkorpela/www/windows-chars.html "\x82" => "‚", "\x83" => "ƒ", "\x84" => "„", "\x85" => "…", "\x86" => "†", "\x87" => "‡", "\x88" => "ˆ", "\x89" => "‰", "\x8a" => "Š", "\x8b" => "‹", "\x8c" => "Œ", "\x91" => "‘", "\x92" => "’", "\x93" => "“", "\x94" => "”", "\x95" => "•", "\x96" => "–", "\x97" => "—", "\x98" => "˜", "\x99" => "™", "\x9a" => "š", "\x9b" => "›", "\x9c" => "œ", "\x9f" => "Ÿ", ); return str_replace(array_keys($translation),array_values($translation),$input); 

Это работает для меня TM