【问题标题】:Converting a Word document into usable HTML in PHP在 PHP 中将 Word 文档转换为可用的 HTML
【发布时间】:2010-09-16 22:58:05
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: php ms-word


    【解决方案1】:

    这在过去对我很有帮助:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 根据我的经验,即使所有字符编码设置正确,一些字符在进入浏览器时也会被吞掉。我不知道这是否是 PHP(我最常用的服务器语言)中的错误,但我发现转换为实体更可靠。
      • 嗨,Richard,关于如何设置 MySQL 以支持 UTF-8 有什么建议吗?谢谢!
      • 创建数据库 db_name CHARACTER SET 'utf8' - 请参阅 dev.mysql.com/doc/refman/5.0/en/charset-database.htmldev.mysql.com/doc/refman/5.0/en/charset-table.html。请注意,您必须执行 SET NAMES 'utf8'; 之类的操作。当您连接到数据库以确保您以 UTF-8 获取数据时。
      【解决方案3】:

      我认为所有这些答案都忽略了一个要点。 Windows 本身使用 latin1 的 Windows 风格,因此如果您将一些特殊字符(如不对称引号)粘贴到 Windows 机器上的表单中,然后发送到 unix(或任何非 muckrosoft)框(即发送到数据库)或其他)某些字符与 unix 系统所理解的任何内容都不匹配,因此字符混乱和乱码。这意味着即使你有一个 UTF-8 数据库并使用 htmlentities,一些讨厌的东西仍然会通过,因为它们是操作系统无法识别的字符——它们甚至不是 UTF-8 的一部分——是微软独有的发明。我很想知道一个巧妙的解决方案 - 我所做的是手动将我遇到的(也是手动的)UTF-8 字符列表中的 microsoft-only 字符的字符代码列入黑名单,对所有这些字符执行 str_replace,并且那么你可以对它们做任何你想做的事情——iconv、htmlentities,直接保存到 utf8 数据库中,这不再重要了。

      我对这一切的理解有点不稳定 - 请查看 http://www.cs.tut.fi/~jkorpela/www/windows-chars.html 以获得我在上面截取为简短形式的出色解释。 - 如果有人有更好的解决方案(肯定有一个!)如何 PHPify 这篇文章的解释......我很想听听!

      【讨论】:

        【解决方案4】:

        htmlspecialchars() 会让你走得更远,但要小心,因为 Word 文档很乱。

        【讨论】:

          【解决方案5】:

          这是我为非便携式 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);
          

          它对我有用TM

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-01-16
            • 2016-01-02
            • 1970-01-01
            • 1970-01-01
            • 2014-07-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多