使用PHP读取Word XML文件

时间:2012-11-05 16:18:42

标签: php xml ms-word

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

5 个答案:

答案 0 :(得分:1)

如果您只对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>";
    }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我知道这不是你想要的,但是你可以让他们在.odt中重新保存Word文档吗?

如果你进入那个阶段,这篇文章会有所帮助: reading odt files in php

答案 3 :(得分:0)

你走了:))

$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

希望它可以帮助你!

答案 4 :(得分:0)

我没有直接的答案,但我倾向于将这样一个复杂的问题分解成更简单的部分。

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

[我发现了这个问题,因为我正在使用谷歌搜索一个框架,让我通过Word生成并清理它的HTML - 将其转换为合法的XHTML1.0,删除Word创建的无用样式信息,同时保留我的用户生成的样式等。第二个将需要一些实验来确定我想要保留什么以及我想要丢弃什么,但我认为这完全符合我的爱好者能力。]