代码之家  ›  专栏  ›  技术社区  ›  Ultimate Gobblement

如何在Linux服务器上刮取MS Word文档文本?

  •  2
  • Ultimate Gobblement  · 技术社区  · 15 年前

    有人问我如何创建一个网站,在那里一些用户可以上传Microsoft Word文档,然后其他人可以搜索包含特定关键字的上传文档。该站点将位于运行PHP和MySQL的Linux服务器上。我目前正试图找出是否以及如何从文档中删除此文本。如果有人能提出一个好的方法来做这件事,将是非常感谢。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Ruel    15 年前

    下面是一个使用 catdoc :

    function catdoc_string($str)
    {
        // requires catdoc
    
        // write to temp file
        $tmpfname = tempnam ('/tmp','doc');
        $handle = fopen($tmpfname,'w');
        fwrite($handle,$a);
        fclose($handle);
    
        // run catdoc
        $ret = shell_exec('catdoc -ab '.escapeshellarg($tmpfname) .' 2>&1');
    
        // remove temp file
        unlink($tmpfname);
    
        if (preg_match('/^sh: line 1: catdoc/i',$ret)) {
            return false;
        }
    
        return trim($ret);
    }
    
    function catdoc_file($fname)
    {
        // requires catdoc
    
        // run catdoc
        $ret = shell_exec('catdoc -ab '.escapeshellarg($fname) .' 2>&1');
    
        if (preg_match('/^sh: line 1: catdoc/i',$ret)) {
            return false;
        }
    
        return trim($ret);
    }
    

    Source

        2
  •  4
  •   ZoFreX mxk    15 年前

    从新的docx格式中删除文本很简单。文件本身只是一个zip文件,如果您查看其中一个文件,就会发现一堆xml文件。文本包含在此zip文件中的word/document.xml中,所有实际用户输入的文本都将显示在<w:t>标记中。如果提取“标记”中显示的所有文本,则会刮掉文档。