我有一个场景,我需要计算文件中的单词数。
我有不同的文件格式,例如.doc
,.xls
,.pdf
和.txt
。我正在使用这种方法进行计数:
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="docfile" />
<input type="submit" name="submit" />
</form>
<?php
if(isset($_POST['submit'])){
$file = $_FILES['docfile']['name'];
$file = str_replace(" ","_",$file);
//$file = file_get_contents($file);
$ext = pathinfo($file, PATHINFO_EXTENSION);
move_uploaded_file($_FILES['docfile']['tmp_name'],"uploads/".$file);
if($ext == "txt" || $ext == "pdf" || $ext == "doc" || $ext == "docx"){
$file = file_get_contents("uploads/".$file);
echo str_word_count($file);
}
}
?>
但它没有为文件返回正确的字数。
答案 0 :(得分:3)
Apache Tika是一个Java框架,能够识别大量文档类型并从中提取元信息。它能够确定它识别的许多文档类型的字数。
我为你的PHP问题提到了这个Java框架,因为它有一个名为PhpTikaWrapper的PHP包装器。我从来没有使用过包装器,但Apache Tika可以提取你之后的元信息,调查包装器可能证明是有益的。
答案 1 :(得分:0)
.doc
.pdf
和.xls
不仅仅是可读的。要对此进行测试,请尝试使用notepad
或gedit
等基本文本编辑器打开pdf。你会看到似乎是胡言乱语的东西。这与PHP在您阅读文件内容时看到的内容相同。
可能使用PHPOffice中的PHPWord和PHPExcel解析 .xls
和.doc
。您需要查看这些库。我对PDF没有任何了解,但可能有些东西。
我建议编写一系列类,这些类都实现类似的接口,以便根据扩展名将它们切换出来。
答案 2 :(得分:0)
我一直在研究一个通用类,它包含了Web和Stack Overflow上的各种方法,它们为doc,docx,pdf和txt文件提供了单词,行和页面计数。我希望它对人们有用。如果有人可以让RTF使用它,我会喜欢拉动请求! https://github.com/joeblurton/doccounter