在Word中将Word文档转换为可用的HTML

时间:2008-10-13 19:20:44

标签: php ms-word

我有一组Word文档,我想使用我编写的PHP工具发布。我将Word文档复制并粘贴到文本框中,然后使用PHP程序将它们保存到MySQL中。我遇到的问题来自Word文档的所有非标准字符,如引号和省略号(“...”)。我现在所做的是手动搜索并用纯文本或HTML实体替换这些东西(以及外来符号,如e-acute)(& eacute;等等)PHP中是否有一个函数我可以调用它将获取Word文档的输出并将应该是实体的所有内容转换为实体,以及将在Firefox中无法正确显示的其他符号转换为显示的符号。

谢谢!

5 个答案:

答案 0 :(得分:5)

过去这对我有好处:

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

答案 1 :(得分:3)

更好的解决方案是确保您的数据库设置为支持UTF-8字符。扩展集中可用的其他字符应涵盖您正在讨论的所有“非标准”字符。

否则,如果您确实必须将这些字符转换为HTML实体,请使用htmlentities()

答案 2 :(得分:1)

我认为所有这些答案都错过了一个重要的观点。 Windows本身使用latin1的windows风格,所以如果你将一些特殊字符(如不对称的引号)粘贴到Windows机器上的一个表单中,然后发送到unix(或任何非muckrosoft)框(对于数据库)或者其他任何一些字符与unix系统所理解的任何东西都不匹配,因此混淆和乱码的字符。这意味着即使你有一个UTF-8数据库,并使用htmlentities,一些恶意仍然会通过,因为它们是操作系统无法识别的字符 - 它们甚至不是UTF-8的一部分 - 是微软唯一的发明。我想知道一个光滑的解决方案 - 我所做的是手动将我遇到的仅限微软的字符的字符代码列入UTF-8字符的(也是手动的)列表中,为所有这些字符执行str_replace,以及然后,你可以随心所欲地做任何事情 - iconv,htmlentities,直接保存到utf8数据库,重要的不再是。

我对这一切的把握有点不稳定 - 请查看http://www.cs.tut.fi/~jkorpela/www/windows-chars.html以获得一个很好的解释,我已将其简化为上面的简短形式。 - 如果有人有更好的解决方案(肯定有一个!)如何PHP化本文解释的内容...我很乐意听到它!

答案 3 :(得分:0)

htmlspecialchars()会让你走得很远,但请注意,因为Word文档很乱。

答案 4 :(得分:0)

这是我用非便携式Windows字符集解决问题的解决方案。这将使用等效的HTML实体替换有问题的几乎拉丁语1个字符。

$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