1

有人对如何使用 PHP 读取 Word (2007-2013) 文件有任何建议吗?我正在使用内置样式来标记一个 word 文档,并且希望最好用 PHP 来阅读它以分析内容。我试过搜索谷歌和这个网站,但没有运气。如果有人对此有任何经验或对我将从哪里开始的想法,将不胜感激。

4

5 回答 5

4

如果您只是对 Word 文档的内容感兴趣,例如将其转换为 HTML 页面。我不推荐 PHPWord,因为它的内部结构相当复杂。以下代码仅使用 PHP 原生功能来读取 docx 文档的所有段落。

 /*DOCX is actually a ZIP file containing other files, document.xml 
holds the text of you document, sadly not the styles, you need to drill
further into other files to extract the styles*/

    $result = file_get_contents('zip://word.docx#word/document.xml');

    //Load the document XML into PHP's SimpleXML
    $xml = simplexml_load_string($result,null, 0, 'w', true);
    $body = $xml->body;
    foreach($body[0] as $key => $value){
        echo "<p>";
        if($key == "p"){
            foreach ($value->r as $kkey => $vvalue) {
                echo (string)$vvalue->t;
            }
        }
        echo "</p>";
    }
于 2015-08-17T12:05:15.410 回答
1

干得好 :)

$zip = new ZipArchive;
$zip->open("MyFile.docx");
if (($index = $zip->locateName("word/document.xml")) !== false) {
    $text = $zip->getFromIndex($index);
    $xml = DOMDocument::loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
    echo $xml->saveXML();
}
$zip->close();

如果你需要安装 zip 分机,你可以在这里找到它:http: //php.net/manual/en/zip.installation.php

希望它可以帮助你!

于 2015-06-10T04:52:33.807 回答
0

你可以使用PHPWord!我相信它具有阅读文档的功能。

于 2013-02-08T02:16:29.453 回答
0

我知道这不是您想要的,但您能否让他们以 .odt 格式重新保存 Word 文档?

如果您到了那个阶段,这篇文章可能会有所帮助: 在 php 中读取 odt 文件

于 2013-02-08T03:47:43.653 回答
0

我没有直接的答案,但我的偏好是将这样的复杂问题分解成更简单的部分。

我将使用的方法是在 Word(或 OpenOffice 或 LibreOffice)中打开它并保存为 HTML。然后我会在前面添加一条指令,并使用 PHP 中可用的许多 XML 类/扩展之一来阅读它。

[我发现这个问题是因为我在谷歌上搜索一个框架,它可以让我浏览 Word 生成的 HTML 并清理它——将它变成合法的 XHTML1.0,删除 Word 创建的无用样式信息,同时保留我的用户- 生成的样式等。那第二个需要一些实验来确定我想要保留什么以及我想要丢弃什么,但我认为这完全在我的业余爱好者的能力范围内。]

于 2017-02-06T23:06:40.610 回答