CodeHighlight

2013年8月31日 星期六

[PHP]用PHP讀docx相關函式

由於最近需要處理大量檔案內的資料搜尋,據傳docx檔案是由大量XML所組成,
所以我想應該會有可以解析的函式可用,果然在stackoverflow找到有人分享相關的函式:

<?php
     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 "&lt;hr&gt;";  
          //file_put_contents('1.xml', $content);  
          $content = str_replace('&lt;/w:r&gt;&lt;/w:p&gt;&lt;/w:tc&gt;&lt;w:tc&gt;', " ", $content);  
          $content = str_replace('&lt;/w:r&gt;&lt;/w:p&gt;', "\r\n", $content);  
          $striped_content = strip_tags($content);  
          return $striped_content;  
      }  
      $filename = "customers.docx";  
      $content = read_file_docx($filename);  
      if($content !== false) {  
          echo nl2br($content);  
      }  
      else {  
          echo 'Couldn\'t the file. Please check that file.';  
      }
?>

目前測試的感覺還不錯,格式部分也幾乎都會保留,如果做純粹座內文搜尋的話,是相當足夠的!




Reference:

沒有留言:

張貼留言