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

问题描述:

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

谢谢!

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

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

+0

根据我的经验,即使所有正确的字符集编码的,一些字符一下就被他们一到浏览器的时间吞噬。我不知道这是PHP中的一个错误(我使用的服务器语言最多)还是什么,但我发现转换为更可靠的实体。 – eyelidlessness 2008-10-13 19:49:24

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