我有一个场景,我需要计算文件中的单词数。我有不同的文件格式,如.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);
}
}
?>
但是它没有返回正确的文件字数。
Apache Tika是一个Java框架,能够识别许多文档类型并从中提取元信息。它能够确定它所识别的许多文档类型的字数。
我提到这个Java框架的PHP问题,因为有一个PHP包装器称为PhpTikaWrapper。我从未使用过包装器,但是Apache Tika可以提取您需要的元信息,因此,研究包装器可能是有益的。
你的任务很艰巨。.doc
.pdf
和.xls
不是简单可读的。为了测试这一点,尝试使用notepad
或gedit
等基本文本编辑器打开pdf。你会看到一些似乎是胡言乱语的东西。这与PHP读取文件内容时看到的内容是一样的。
.xls
和.doc
可能可以用PHPWord和PHPExcel从phoffice中解析。您需要查阅这些库。我不知道什么pdf文件,但可能有什么。
我建议编写一系列实现类似接口的类,以便您可以根据扩展名切换它们。
我一直在做一个通用类,它结合了网络上和Stack Overflow上找到的各种方法,提供了doc, docx, pdf和txt文件的字数,行数和页数。我希望它对人们有用。如果有人可以得到RTF工作与它我喜欢拉请求!https://github.com/joeblurton/doccounter