PHP编程计算文件或数组中单词出现频率的方法


Posted in PHP onMay 22, 2017

本文实例讲述了PHP编程计算文件或数组中单词出现频率的方法。分享给大家供大家参考,具体如下:

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

<?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);

对于大文件,第二种方法比较快比较安全,不会引起内存异常。

PHP 相关文章推荐
php用数组返回无限分类的列表数据的代码
Aug 08 PHP
PHP文件读写操作之文件读取方法详解
Jan 13 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
Yii2框架中日志的使用方法分析
May 22 #PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 #PHP
php readfile下载大文件失败的解决方法
May 22 #PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 #PHP
PHP中trait使用方法详细介绍
May 21 #PHP
php写app接口并返回json数据的实例(分享)
May 20 #PHP
PHP实现json_decode不转义中文的方法
May 20 #PHP
You might like
星际玩家的三大定律
2020/03/04 星际争霸
php AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php 抽象类的简单应用
2011/09/06 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP比你想象的好得多
2014/11/27 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
python版百度语音识别功能
2019/07/09 Python
python获取Pandas列名的几种方法
2019/08/07 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python命令 -u参数用法解析
2019/10/24 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
幼儿园中秋节活动反思
2014/02/16 职场文书
家长学校培训材料
2014/08/20 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
品德与社会教学反思
2016/02/24 职场文书