如何使用PHP解析Microsoft Word 97-2004 .doc文件

时间:2015-05-12 18:32:38

标签: php parsing doc

我如何用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在评论中所建议的那样。

1 个答案:

答案 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) ;

在屏幕上查看结果。

这对我来说最适合到现在为止。 如果有人有更好的解决方案,请告诉我。