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


У меня есть набор документов Word, которые я хочу опубликовать с помощью написанного мной инструмента PHP. Я копирую и вставляю документы Word в текстовое поле, а затем сохраняю их в MySQL с помощью программы PHP. Проблема, с которой я сталкиваюсь, возникает из-за всех нестандартных символов, которые есть в документах Word, таких как фигурные кавычки и многоточия ("..."). Что я делаю в данный момент, так это вручную ищу и заменяю такие вещи (а также иностранные символы, такие как e-acute) либо обычным текстом, либо объектами HTML (é и т.д.) Есть ли в PHP функция, которую я могу вызвать, которая будет выводить текстовый документ и преобразовывать все, что должно быть сущностями, в сущности и другие символы, которые неправильно отображаются в Firefox, в символы, которые отображаются.

Спасибо!

Author: Fionnuala, 2008-10-13

5 answers

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

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

 3
Author: Richard Turner, 2008-10-13 19:27:01

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

$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')
 5
Author: eyelidlessness, 2008-10-13 19:34:33

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

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

 1
Author: Bheema, 2010-05-18 09:32:01

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

 0
Author: acrosman, 2008-10-13 19:28:50

Вот решение, которое я придумал для проблемы с непереносимым набором символов 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);

Это Работает Для МеняТМ

 0
Author: tylerl, 2011-07-03 04:46:39