我如何用PHP解析.doc文件" Microsoft Word 97-2004文档"?
我可以解析"正常"带有
的.doc文件private function read_doc() {
$fileHandle = fopen($this->filename, "r");
$line = @fread($fileHandle, filesize($this->filename));
$lines = explode(chr(0x0D),$line);
$outtext = "";
foreach($lines as $thisline)
{
$pos = strpos($thisline, chr(0x00));
if (($pos !== FALSE)||(strlen($thisline)==0))
{
} else {
$outtext .= $thisline." ";
}
}
//print_r($outtext);die();
$outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
return $outtext;
}
但这不适用于Microsoft Word 97-2004 .doc文件。 我只是想提取纯文本。没别了。
- > 解决方案 PHPWord就像Mark Baker在评论中所建议的那样。
答案 0 :(得分:1)
最后我必须安装linux catdoc 0.94.2才能解决问题。 PHPWord无法以正确的方式将所有文件转换为纯.txt格式。
所以这是一个针对Linux(例如Unbuntu)用户的解决方案: 在命令行上安装catdoc
sudo apt-get install catdoc
如果您使用的是Windows Server,请查看此内容。它也适用于我:
http://blog.brush.co.nz/2009/09/catdoc-windows/
然后在您的PHP代码中,您可以像这样调用它(对于Linux调用):
$escapeFile = escapeshellarg($data['tmp_name']);
$command = "catdoc $escapeFile";
$output = array();
exec($command,$output);
$text = implode("\n",$output);
然后你可以做例如
$text = strip_tags($text);
$text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $text);
echo nl2br($text) ;
在屏幕上查看结果。
这对我来说最适合到现在为止。 如果有人有更好的解决方案,请告诉我。