簡體   English   中英

從PHP讀取MS Word文檔文件

[英]Reading MS Word doc files from php

我正在使用以下代碼將MS Word .doc文件讀取為純文本。 我從stackoverflow帖子中獲得了此代碼,但我無法完全理解該代碼。 但是,當閱讀諸如Adrian的履歷之類的文檔(www.iknowkungfoo.com/resume/adrian_j_moreno_resume.doc)時,代碼將返回fread錯誤。 似乎無法在此文件中訪問標頭。 有人可以解釋一下這是什么問題嗎?

function readWord($filename) {
  if(file_exists($filename))
  {
      if(($fh = fopen($filename, 'r')) !== false ) 
      {
        $headers = fread($fh, 0xA00);
        //$headers = fread($fh, filesize($filename));
         // 1 = (ord(n)*1) ; Document has from 0 to 255 characters
         $n1 = ( ord($headers[0x21C]) - 1 );

         // 1 = ((ord(n)-8)*256) ; Document has from 256 to 63743 characters
         $n2 = ( ( ord($headers[0x21D]) - 8 ) * 256 );

         // 1 = ((ord(n)*256)*256) ; Document has from 63744 to 16775423 characters
         $n3 = ( ( ord($headers[0x21E]) * 256 ) * 256 );

         // 1 = (((ord(n)*256)*256)*256) ; Document has from 16775424 to 4294965504 characters
         $n4 = ( ( ( ord($headers[0x21F]) * 256 ) * 256 ) * 256 );

         // Total length of text in the document
         $textLength = ($n1 + $n2 + $n3 + $n4);
            //var_dump($headers);
         $extracted_plaintext = fread($fh, $textLength);

         // if you want to see your paragraphs in a new line, do this
         // return nl2br($extracted_plaintext);
         return $extracted_plaintext;
      } else {
        return false;
      }
  } else {
    return false;
  }  
}

這是用於從php讀取docx文件,在函數參數中傳遞文件路徑並在其中返回doc文件中文本的函數。

function read_file_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);
    }// end while

    zip_close($zip);

    //echo $content;
    //echo "<hr>";
    //file_put_contents('1.xml', $content);     

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM