在PHP中将Word文档转换为可用的HTML
我有一套Word文档,我想用我写的PHP工具发布。我将Word文档复制并粘贴到文本框中,然后使用PHP程序将它们保存到MySQL中。我遇到的问题来自Word文档中所有非标准字符,如卷曲引号和省略号(“...”)。我现在所做的是手动搜索并用纯文本或HTML实体替换这些类型的东西(以及外部符号,如e-acute)(& eacute;等等)在PHP中是否有函数可以调用获取Word文档的输出并将应该是实体的所有内容转换为实体,并将其他符号在Firefox中无法正确显示为可显示的符号。在PHP中将Word文档转换为可用的HTML
谢谢!
更好的解决方案是确保您的数据库设置为支持UTF-8字符。扩展集中可用的其他字符应涵盖您所谈论的所有“非标准”字符。
否则,如果您确实必须将这些字符转换为HTML实体,请使用htmlentities()。
htmlspecialchars()会给你一个很长的路,但要小心,因为Word文档很混乱。
这使我受益匪浅,在过去:
$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')
我认为所有这些答案会错过一个重要的点。 Windows本身使用latin1的windows风格,所以如果你在Windows机器上粘贴一些特殊的字符(比如不对称的引号)到一个窗体中,然后发送到一个unix(或者任何非muckrosoft)盒子(对于数据库来说)或者其他),某些字符不能与unix系统理解的任何内容匹配,因此会出现混淆和乱码的字符。这意味着即使你有一个UTF-8数据库并使用htmlentities,一些nasties仍然会通过,因为它们是操作系统无法识别的字符 - 它们甚至不是UTF-8的一部分 - 是仅限微软的发明。我很想知道一个流畅的解决方案 - 我所做的是手动将我遇到的仅包含微软字符的字符代码黑名单列入UTF-8字符(也是手动)列表中,为所有这些字符执行str_replace,那么你可以随心所欲地做任何事情 - iconv,htmlentities,直接保存到utf8数据库中,这不重要。
我对这件事的把握都有点不稳定 - 请查看http://www.cs.tut.fi/~jkorpela/www/windows-chars.html,这是一个很好的解释,我已将其肢解成上面的简短形式。 - 如果有人有更好的解决方案(当然有一个!)如何PHPify这篇文章解释...我很想听到它!
下面是我用非便携式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
根据我的经验,即使所有正确的字符集编码的,一些字符一下就被他们一到浏览器的时间吞噬。我不知道这是PHP中的一个错误(我使用的服务器语言最多)还是什么,但我发现转换为更可靠的实体。 – eyelidlessness 2008-10-13 19:49:24