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 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
微信公众平台天气预报功能开发
Jul 06 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php日期操作技巧小结
Jun 25 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
PHP count()函数讲解
Feb 03 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
风格模板初级不完全修改教程
2006/10/09 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php编程每天必学之表单验证
2016/03/01 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python yield与实现方法代码分析
2018/02/06 Python
python 构造三维全零数组的方法
2018/11/12 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
实习教师个人的自我评价
2013/11/08 职场文书
2015年新农合工作总结
2015/03/30 职场文书
行政处罚事先告知书
2015/07/01 职场文书
关于幸福的感言
2015/08/03 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
详解Python中__new__方法的作用
2022/03/31 Python
Python OpenCV实现图形检测示例详解
2022/04/08 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技