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安全配置
Dec 06 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
php调用google接口生成二维码示例
Apr 28 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
php下Memcached入门实例解析
Jan 05 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
php获取ajax的headers方法与内容实例
Dec 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
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php mail to 配置详解
2014/01/16 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
实例讲解React 组件生命周期
2020/07/08 Javascript
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python读取几个G的csv文件方法
2019/01/07 Python
超简单的Python HTTP服务
2019/07/22 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python如何安装下载后的模块
2020/07/03 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
python openCV自制绘画板
2020/10/27 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
中专毕业个人的自荐信格式
2013/09/21 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
抗震救灾标语
2014/06/26 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
小学安全工作总结2015
2015/05/18 职场文书
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫