我尝试过很多事情,比如如何从word文件。doc,docx,。xlsx,。pptx php中提取文本。但这不是一个解决方案。
我的服务器是基于Linux的,所以启用extension=php_com_dotnet.dll不是解决方案。
另一个解决方案是在服务器上安装LIBRE office,并动态地将。doc文件转换为。txt文件,然后计算该文件中的单词。这是一项非常繁琐和耗时的工作。
我只需要一个简单的php脚本,从。doc文件中删除特殊字符,并计算单词的数量。
您可以尝试使用这个PHP类,它声称能够将.doc
和.docx
文件转换为文本格式。
根据给出的例子,你可以这样使用它:
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
, pdf
和txt
文件的单词,行和页面计数。我希望它对人们有用。如果有人能得到rtf
与它的工作,我喜欢拉请求!https://github.com/joeblurton/doccounter