我尝试过很多像How to extract text from word file .doc,docx,.xlsx,.pptx php这样的事情。 但这不是解决方案。
我的服务器是基于Linux的,因此启用 extension = php_com_dotnet.dll 不是解决方案。
另一个解决方案是在服务器上安装LIBRE office并将.doc文件转换为.txt,然后计算该文件中的单词。这是非常繁琐的工作和耗时。
我只需要一个简单的php脚本,从.doc文件中删除特殊字符并计算单词数。
答案 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 link(here是一个更完整的文件),你可以在其中实际看到如何制作二进制结构并提取来自那里的信息。我现在不能这样做,所以我希望其他人可以帮助你解决这个问题!
答案 1 :(得分:2)
我已经构建了一个工具,它结合了网络和Stack Overflow上的各种方法,为doc
,docx
,pdf
和txt
提供了单词,行和页数。 rtf
个文件。我希望它对人们有用。如果有人可以auto
使用它,我会喜欢拉动请求! https://github.com/joeblurton/doccounter
答案 2 :(得分:1)
最后我不得不使用Libreoffice。但它使用它非常有效。它解决了我所有的问题。
所以我的建议是在服务器上安装libreoffice的'HEADLESS'包并使用命令行转换