2012-05-18 5 views
5

Ich mache jetzt ein Projekt, und ich bin fest mit dem Lesen von Word-Dokumenten.lesen Word-Dokument in PHP

Word-Datei Inhalt.

This is a test word file in PHP. 

Thank you. 

PHP-Code.

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

Ausgang:

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 

Gibt es trotzdem, das Word-Dokument in PHP zu lesen?

+0

Mögliche Duplikat http://stackoverflow.com/questions/7144023/opening-word-document-with-read-mode-using-php –

+0

@Webtecher Ich habe es versucht Ich habe diesen Fehler bekommen. 'Fataler Fehler: Klasse 'COM' nicht gefunden ' – Othman

+0

Versuchen Sie NiftyDude Antwort :-) –

Antwort

1

Word-Dokument wird nicht bequem wie eine Textdatei gespeichert (es ist mehr wie xml/binary-Datei), so können Sie nicht einfach echo verwenden und erwartet, dass es den lesbaren Teil der docx Datei ausgibt.

Es gibt eine Bibliothek, die tun könnte, was Sie wollen, aber es dauert nur doc Datei

Docvert

+0

es ist in Python nicht PHP. Ich weiß nichts in Python. also gibt es keine lösung? – Othman

+0

http://code.google.com/p/docvert/source/browse/trunk/web-service.php?r=176 wird meine Antwort bearbeiten –

2

„docx“ unterscheidet sich von „doc“. Docx-Dateien sind grundsätzlich xml files in a zipfile container (as described by wikipedia). Doc-Dateien sind binäre Blobs.

Mir ist keine Bibliothek bekannt, die docx-Dateien in PHP (obwohl Phpdocx can write them) leicht lesen kann. Da dies jedoch nur Zip-Dateien und XML-Dateien sind, sollten Sie in der Lage sein, etwas unter Verwendung von ZipArchive zum Öffnen des docx-Containers und DOMDocument oder oder XMLReader oder XSLTProcessor, um die XML-Dokumente selbst zu lesen.

10

Für docx Verwendung dieser Funktion

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; 
} 

Es Text von docx

zurück
+0

aber das Format ändert sich. Was tun, um das Format gleich zu halten? –

+0

@RohanGala wird es docx Wort Datei lesen und den Inhalt zurückgeben. Können Sie mir zeigen, welches Format Sie bekommen? – Sudhir

+0

Format wie in der Leerzeichen und Leerzeilen werden nicht angezeigt, aber der Text ist richtig erhalten –

3

"PHPWord ist eine Bibliothek in reinem PHP geschrieben Dies bietet eine Reihe von Klassen zum Schreiben und Lesen von verschiedenen Dateiformaten. " (PHPOffice, 2016)

Diese offene PHP-Bibliothek sollte Ihr Problem lösen. Sie können eighter es herunterladen oder es von dem Komponisten erhalten:

https://github.com/PHPOffice/PHPWord

+0

PHPWord funktioniert gut manchmal, aber für eine Menge Dateien , der extrahierte Inhalt ist unvollständig :( – JCarlos