7

私は今プロジェクトをやっていて、単語の文書を読むのに行き詰まっています。

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Â@†ï&amp;þ‡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でドキュメントという単語を読む方法はありますか?

4

5 に答える 5

16

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 からテキストを返します

于 2015-08-07T11:01:50.950 に答える
2

「docx」は「doc」とは異なります。Docx ファイルは、基本的に zipfile コンテナー内の xml ファイルです (wikipedia で説明されているように)。Doc ファイルはバイナリ BLOB です。

PHPでdocxファイルを簡単に読み取ることができるライブラリがないことを認識しています(ただし、Phpdocxはそれらを書き込むことができます)。ZipArchiveただし、これらは単なる zip ファイルと xml ファイルであるため、docx コンテナーを開いDOMDocumentたり、xml ドキュメント自体を読み取っSimpleXMLたりXMLReaderするために何かをまとめることができるはずです。XSLTProcessor

于 2012-05-18T03:59:22.457 に答える
1

Wordドキュメントはテキストファイルのように便利に保存されないため(xml /バイナリファイルに似ています)、echoを使用して、docxファイルの人間が読める部分を出力することを期待することはできません。

あなたがやりたいことをすることができるライブラリがありますが、それはdocファイルだけを取ります

Docvert

于 2012-05-18T03:48:22.017 に答える