Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中.doc文件的解析_Php_Html_Doc - Fatal编程技术网

php中.doc文件的解析

php中.doc文件的解析,php,html,doc,Php,Html,Doc,我使用html标记创建了.doc文件,它包含html表单元素,如Textbox、checkbox、radiobutton、dropdown和隐藏字段。 打开文档时,这些文件将正确显示 当用php代码更新.doc文件时,我能够解析.doc文件。并且能够在保存到数据库时使用表单fileds数据 在.doc文件中使用“另存为”选项时,新创建的文档文件将正确显示html表单元素。但无法分析“另存为”文件中的数据 我还想使用php解析“另存为”文档文件。请帮助我如何解决此问题 这是我的文档文件解析代码:

我使用html标记创建了.doc文件,它包含html表单元素,如Textbox、checkbox、radiobutton、dropdown和隐藏字段。 打开文档时,这些文件将正确显示

  • 当用php代码更新.doc文件时,我能够解析.doc文件。并且能够在保存到数据库时使用表单fileds数据
  • 在.doc文件中使用“另存为”选项时,新创建的文档文件将正确显示html表单元素。但无法分析“另存为”文件中的数据
  • 我还想使用php解析“另存为”文档文件。请帮助我如何解决此问题

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

    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;
    
    函数parseWord($userDoc)
    {
    $fileHandle=fopen($userDoc,“r”);
    $line=@fread($fileHandle,filesize($userDoc));
    $lines=分解(chr(0x0D),$line);
    $outtext=“”;
    foreach($行作为$thisline)
    {
    $pos=strpos($thisline,chr(0x00));
    if($pos!==FALSE)| |(strlen($thisline)==0))
    {
    }否则{
    $outtext.=$thisline.“;
    }
    }
    如果(修剪($outtext)==“”){
    $outtext=“”;
    //回声“
    UTF”; $filename=$userDoc; 如果(文件_存在($filename)){ $outtext=“”; if($fh=fopen($filename,'r'))!==false){ $headers=fread($fh,0xA00); #1=(ord(n)*1);文档包含0到255个字符 $n1=(ord($headers[0x21C])-1); #1=((ord(n)-8)*256);文档包含256到63743个字符 $n2=((ord($headers[0x21D])-8)*256); #1=((ord(n)*256)*256);文档包含63744到16775423个字符 $n3=((ord($headers[0x21E])*256)*256); #((ord(n)*256)*256)*256);文档包含16775424到4294965504个字符 $n4=((ord($headers[0x21F])*256)*256); #文档中文本的总长度 $textLength=($n1+$n2+$n3+$n4); $extracted_plaintext=fread($fh,$textLength); #如果您想要无格式的纯文本,请执行此操作 //echo$extracted_纯文本; $outtext.=$extracted\u纯文本; #如果您想在网页中看到您的段落,请执行以下操作 //echo nl2br($extracted_plaintext); } fclose($fh); } } $outtext=preg\u replace(“/[^a-zA-Z0-9\s\,\.-\n\r\t@/\\\\(\)]/”,“,”,$outtext); 返回$outtext; } $userDoc=“cv.doc”; $text=parseWord($userDoc); echo$文本;
    先谢谢你

    我使用html标记创建了.doc文件

    不,您创建了一个HTML文件,并给它一个以.doc结尾的文件名

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


    <>你最好的做法是考虑一下为什么你需要在MSWord和PHP中同时处理一个文件,以及你可能使用的其他格式。

    < P>正如你已经说过的,你不能像你尝试的那样简单地打开Office文件。

    以下是Microsoft提供的一个简单易用的库,让您可以执行您想执行的操作:


    你能发布你的解析代码让我们看一下吗?你是说你的文档文件中有一个“另存为”按钮?但是当你在MS Word中打开它时,按钮不起作用?当我在MS Word中打开并单击“另存为”按钮时。然后新的文档文件无法解析文本。这里我的要求是在.doc文件中创建脱机表单。所以我需要将html表单元素数据保存到数据库中。这就是我创建带有html标记的.doc文件的原因。它没有回答这个问题-为什么它必须是.doc格式。