如何使用php脚本从.doc文件中计算单词



我尝试过很多事情,比如如何从word文件。doc,docx,。xlsx,。pptx php中提取文本。但这不是一个解决方案。

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

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

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

您可以尝试使用这个PHP类,它声称能够将.doc.docx文件转换为文本格式。

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-9s,.-nrt@/_()]/", "", $outtext);
    return $outtext;
 }
 echo read_doc("sample.doc");
?>

我用.doc文件测试了这个函数,它似乎工作得很好。它需要对文档的最后一部分进行一些修复(在输出的末尾仍然生成一些随机文本),但是经过一些微调,它可以合理地工作。

编辑:

你是对的,这个功能只适用于.docx文档(我测试的文档可能是使用相同的机制制作的)。保存扩展名为.doc的文件,此功能不起作用!我现在能给您的唯一帮助是.doc二进制规范链接(这里有一个更完整的文件),您可以在其中实际看到二进制结构是如何生成的,并从中提取信息。我现在做不到,所以我希望别人可以帮助你度过这个难关!

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

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

我已经建立了一个工具,它结合了在网络上和Stack Overflow上找到的各种方法,提供doc, docx, pdftxt文件的单词,行和页面计数。我希望它对人们有用。如果有人能得到rtf与它的工作,我喜欢拉请求!https://github.com/joeblurton/doccounter

最新更新