如何使用PHP脚本计算.doc文件中的单词?

时间:2014-07-09 12:33:31

标签: php ms-word

我尝试过很多像How to extract text from word file .doc,docx,.xlsx,.pptx php这样的事情。 但这不是解决方案。

我的服务器是基于Linux的,因此启用 extension = php_com_dotnet.dll 不是解决方案。

另一个解决方案是在服务器上安装LIBRE office并将.doc文件转换为.txt,然后计算该文件中的单词。这是非常繁琐的工作和耗时。

我只需要一个简单的php脚本,从.doc文件中删除特殊字符并计算单词数。

3 个答案:

答案 0 :(得分:2)

您可以尝试使用声称能够以文本格式转换.doc.docx文件的此PHP类。

http://www.phpclasses.org/package/7934-PHP-Convert-MS-Word-Docx-files-to-text.html

根据给出的例子,您可以使用它:

require("doc2txt.class.php");

$docObj = new Doc2Txt("test.docx");
//$docObj = new Doc2Txt("test.doc");

$txt = $docObj->convertToText();
echo $txt;

正如您所指出的,这个库的核心功能,就像许多其他人一样,是这样的:

<?php

 function read_doc($filename)
 {
    $fileHandle = fopen($filename, "r");
    $line = @fread($fileHandle, filesize($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 . " ";
            }
        }

    $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/_()]/", "", $outtext);
    return $outtext;
 }

 echo read_doc("sample.doc");

?>

我已经使用.doc文件测试了这个函数,它看起来效果很好。它需要对文档的最后部分进行一些修复(在输出结束时仍然会生成一些随机文本),但通过一些微调它可以合理地工作。

修改 你是对的,这个函数只适用于.docx文档(我测试的文档可能是使用相同的机制)。保存扩展名为.doc的文件,此功能无效! 我能够立即给你的唯一帮助是。doc binary specifications linkhere是一个更完整的文件),你可以在其中实际看到如何制作二进制结构并提取来自那里的信息。我现在不能这样做,所以我希望其他人可以帮助你解决这个问题!

答案 1 :(得分:2)

我已经构建了一个工具,它结合了网络和Stack Overflow上的各种方法,为docdocxpdftxt提供了单词,行和页数。 rtf个文件。我希望它对人们有用。如果有人可以auto使用它,我会喜欢拉动请求! https://github.com/joeblurton/doccounter

答案 2 :(得分:1)

最后我不得不使用Libreoffice。但它使用它非常有效。它解决了我所有的问题。

所以我的建议是在服务器上安装libreoffice的'HEADLESS'包并使用命令行转换