服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

PHP计算文件或数组中单词出现频率

时间:2015-04-25 01:23来源:未知 作者:最模板 点击:
一:如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词): ?php $str = file_get_contents(/path/to/file.txt); //get string from

一:如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词):

<?php 

$str = file_get_contents("/path/to/file.txt"); //get string from file 

preg_match_all("/\b(\w+[-]\w+)|(\w+)\b/",$str,$r); //place words into array $r - this includes hyphenated words 

$words = array_count_values(array_map("strtolower",$r[0])); //create new array - with case-insensitive count 

arsort($words); //order from high to low  

print_r($words) 
 

 二:如果是大文件,读入内存就不合适了,可以采用如下方法:

<?php 

$filename = "/path/to/file.txt"; 

$handle = fopen($filename,"r"); 

if ($handle === false) { 

  exit; 

  } 

$word = ""; 

while (false !== ($letter = fgetc($handle))) { 

  if ($letter == ' ') { 

    $results[$word]++; 

    $word = ""; 

    } 

  else { 

    $word .= $letter; 

    } 

fclose($handle); 

print_r($results); 

 

Linux命令经典面试题:统计文件中出现次数最多的前10个单词

使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。

 

cat words.txt | sort | uniq -c | sort -k1,1nr | head -10

  主要考察对sort、uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指令各部分的功能:

 

sort:  对单词进行排序

 

uniq -c:  显示唯一的行,并在每行行首加上本行在文件中出现的次数

 

sort -k1,1nr:  按照第一个字段,数值排序,且为逆序

 

head -10:  取前10行数据

 

(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容