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