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循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PDO::beginTransaction讲解
Jan 27 PHP
Laravel框架查询构造器简单示例
May 08 PHP
TP5框架安全机制实例分析
Apr 05 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
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
javascript String 对象
2008/04/25 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
使用python去除图片白色像素的实例
2019/12/12 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python中round函数如何使用
2020/06/19 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
Python基于Faker假数据构造库
2020/11/30 Python
本科生学习总结的自我评价
2013/10/02 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
离职告别感言
2015/08/04 职场文书