php中.doc文件的解析
我使用html标记创建了.doc文件,它包含html表单元素,如Textbox、checkbox、radiobutton、dropdown和隐藏字段。 打开文档时,这些文件将正确显示php中.doc文件的解析,php,html,doc,Php,Html,Doc,我使用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格式。