我正在尝试计算文件中的单词数量。以下代码与.txt
文件一起正常工作。但是当我尝试阅读.doc docx .xls
个文件时。它给我错误的输出。请建议我任何第三方插件。请帮我 。感谢
$str = file_get_contents($path);
function count_words($string)
{
$string = htmlspecialchars_decode(strip_tags($string));
if (strlen($string)==0)
return 0;
$t = array(' '=>1, '_'=>1, "\x20"=>1, "\xA0"=>1, "\x0A"=>1, "\x0D"=>1, "\x09"=>1, "\x0B"=>1, "\x2E"=>1, "\t"=>1, '='=>1, '+'=>1, '-'=>1, '*'=>1, '/'=>1, '\\'=>1, ','=>1, '.'=>1, ';'=>1, ':'=>1, '"'=>1, '\''=>1, '['=>1, ']'=>1, '{'=>1, '}'=>1, '('=>1, ')'=>1, '<'=>1, '>'=>1, '&'=>1, '%'=>1, '$'=>1, '@'=>1, '#'=>1, '^'=>1, '!'=>1, '?'=>1); // separators
$count= isset($t[$string[0]])? 0:1;
if (strlen($string)==1)
return $count;
for ($i=1;$i<strlen($string);$i++)
if (isset($t[$string[$i-1]]) && !isset($t[$string[$i]])) // if new word starts
$count++;
return $count;
}
echo count_words($str);
答案 0 :(得分:1)
如果你在linux上运行,试试这个:
system("wc -w " . $filename);
答案 1 :(得分:0)
我在和你一样处理同样的问题。 您需要做的就是以正确的方式解析.doc docx .xls文件。然后使用count_words
private function read_docx(){
$striped_content = '';
$content = '';
$zip = zip_open($this->filename);
if (!$zip || is_numeric($zip)) return false;
while ($zip_entry = zip_read($zip)) {
if (zip_entry_open($zip, $zip_entry) == FALSE) continue;
if (zip_entry_name($zip_entry) != "word/document.xml") continue;
$content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
zip_entry_close($zip_entry);
}// end while
zip_close($zip);
$content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content);
$content = str_replace('</w:r></w:p>', "\r\n", $content);
$striped_content = strip_tags($content);
return $striped_content;
}