在php中解析.doc文件

时间:2014-07-01 06:34:04

标签: php html doc

我使用html标签创建了.doc文件,其中包含HTML表单元素,如Textbox,checkbox,radiobutton,dropdown和hidden fields。   打开文档时,这些显示正确。

  1. 我可以在使用php代码更新.doc文件时解析.doc文件。并且能够在保存到数据库时使用表单fileds数据。
  2. 使用'另存为' .doc文件中的选项,新创建的doc文件正确显示html表单元素。但无法解析“另存为”的数据。文件。
  3. 我想解析'另存为' doc文件也使用php。请帮帮我怎样才能解决这个问题?

    这是我的doc文件解析代码:

    function parseWord($userDoc) 
    {
        $fileHandle = fopen($userDoc, "r");
        $line = @fread($fileHandle, filesize($userDoc));   
        $lines = explode(chr(0x0D),$line);
        $outtext = "";
        foreach($lines as $thisline)
          {
            $pos = strpos($thisline, chr(0x00));
            if (($pos !== FALSE)||(strlen($thisline)==0))
              {
              } else {
                $outtext .= $thisline." ";
              }
          }
          if(trim($outtext)==""){
             $outtext ="";
            //echo "<br> UTF ";
            $filename = $userDoc;
            if ( file_exists($filename) ) {
                $outtext ="";
              if ( ($fh = fopen($filename, 'r')) !== false ) {
                $headers = fread($fh, 0xA00);
    
                # 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 );
    
                # (((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);
    
                $extracted_plaintext = fread($fh, $textLength);
    
                # if you want the plain text with no formatting, do this
                //echo $extracted_plaintext;
                $outtext .= $extracted_plaintext;
    
                # if you want to see your paragraphs in a web page, do this
                //echo nl2br($extracted_plaintext);
    
              }
              fclose($fh);
            } 
         }
         $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
    
         return $outtext;
    } 
    
    $userDoc = "cv.doc";
    
    $text = parseWord($userDoc);
    echo $text;
    

    提前致谢...

2 个答案:

答案 0 :(得分:0)

  

我使用html标签

创建了.doc文件

不,您创建了一个HTML文件并为其指定了以.doc

结尾的文件名

当您从MSWord保存文件时,它使用专有格式(实际上是多种嵌套格式),而不是HTML。当您提交最初创建的文件时,MSWord会识别其HTML并即时翻译它。有很多方法可以解决这个问题,但在你能够充分利用它们之前,你还有很长的路要走。

现在,您最好的做法是考虑为什么需要在MSWord和PHP中处理文件以及您可能使用的其他格式的问题。

答案 1 :(得分:0)

如前所述,您无法像尝试一样 打开Office文件。

这是一个简单易用的库,由微软提供,让你做你喜欢的东西:

http://phpword.codeplex.com/