2012-05-18 100 views
5

我现在正在做一个项目,而且我一直在阅读word文档。在php中读取word文档

Word文件内容。

This is a test word file in PHP. 

Thank you. 

PHP代码。

$myFile = "wordfile.docx"; 
    $fh = fopen($myFile, 'r'); 
    $theData = fread($fh, 1000); 
    fclose($fh); 
    echo $theData; 

输出:

PK!éQ°Â[Content_Types].xml ¢(´”MOÂ@†ï&þ‡f¯¦]ð`Œ¡pP<*‰Ïëv 
«Ýì,_ÿÞiI¡(ziÒNß÷}fÚÞ`©‹h•5)ë&‘6Sf’²×ñc|Ë"Âd¢°R¶dƒþåEo 
¼r€© ¦l‚»ãå´ÀÄ:0TÉ­×"ЭŸp'䧘¿îtn¸´&€ q(=X¿÷¹˜!.éñ 
š„ä,º_¿WF¥L8W()ò²Êu <"œ›l.Þ%¤¬Ìqª^Nøp0ÙKPºl­*Õ3Ó 
«¢‘ðáIhbçë3žY9ÓÔwr¼¹F›çJB­/Ýœ·é;é"©+Z(³e?ÈaUþ=ÅÚ÷Ä 
ø7¦Ã<I?Hû<4ÆeÓÉ:bGÛž!ÐN ùþÛÆmCÇs+ÂÞ_þbǼ$§ó4ïœ 
0ñ£¶n…´#€W×îٕͱH:#oÒÎñ¿h{»JuLGÎ êõÐtÄêDZXg÷åFÌ kÈæÕîÿÿPK 
!ÇÂ'¼ß_rel 

反正是有阅读在PHP中的word文档?

+0

的可能的复制http://stackoverflow.com/questions/7144023/opening-word-document-with-read-mode-using-php – 2012-05-18 03:48:38

+0

@Webtecher我试过了,我得到了这个错误。 '致命的错误:没有找到'COM'类' – Othman

+0

尝试NiftyDude答案:-) – 2012-05-18 03:54:59

回答

1

Word文档没有像文本文件一样方便地存储(它更像是xml/binary文件),因此您不能只使用echo并希望它输出docx文件的可读部分。

有可能做你想做的图书馆,但只需要doc文件

Docvert

+0

它在python中不是php。我不知道python中的任何东西。所以没有解决方案? – Othman

+0

http://code.google.com/p/docvert/source/browse/trunk/web-service.php?r=176将编辑我的答案 –

2

“的docx”是从“文档”不同。 Docx文件基本上是xml files in a zipfile container (as described by wikipedia)。 Doc文件是二进制斑点。

我知道没有图书馆,可以轻松地读取docx文件在PHP(虽然Phpdocx can write them)。但是,由于这些只是zip文件和xml文件,因此您应该可以使用ZipArchive将某些内容放在一起以打开docx容器和DOMDocumentSimpleXMLXMLReaderXSLTProcessor以自行读取xml文档。

10

对于DOCX使用此功能

function read_docx($filename){ 

    $striped_content = ''; 
    $content = ''; 

    if(!$filename || !file_exists($filename)) return false; 

    $zip = zip_open($filename); 
    if (!$zip || is_numeric($zip)) return false; 

    while ($zip_entry = zip_read($zip)) { 

     if (zip_entry_open($zip, $zip_entry) == FALSE) continue; 

     if (zip_entry_name($zip_entry) != "word/document.xml") continue; 

     $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 

     zip_entry_close($zip_entry); 
    } 
    zip_close($zip);  
    $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); 
    $content = str_replace('</w:r></w:p>', "\r\n", $content); 
    $striped_content = strip_tags($content); 

    return $striped_content; 
} 

它将从DOCX

返回文本
+0

但格式不断变化,如何保持格式相同? –

+0

@RohanGala它会读取docx文件并将其返回内容您能告诉我您获得了哪种格式吗? – Sudhir

+0

Format in as空格和空行不显示,但文本得到正确 –

3

“PHPWord是一个用纯PHP编写的库它提供了一组类来写入和读取不同的文档文件格式。“ (PHPOffice,2016)

这个开放的php库应该可以解决你的问题。你可以eighter下载奥德作曲家得到它:

https://github.com/PHPOffice/PHPWord

+0

PHPWord有时很好用,但对于很多文件,提取的内容不完整:( – JCarlos