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脚本的10个技巧(1)
Oct 09 PHP
php简单静态页生成过程
Mar 27 PHP
简化php模板页面中分页代码的解析
Feb 06 PHP
php URL编码解码函数代码
Mar 10 PHP
PHP Pear 安装及使用
Mar 19 PHP
php中用数组的方法设置cookies
Apr 21 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php文件上传的简单实例
Oct 19 PHP
PHP输出日历表代码实例
Mar 27 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
JS实现页面打印功能
2017/03/16 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
python中实现字符串翻转的方法
2018/07/11 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python flask安装和命令详解
2019/04/02 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
python try...finally...的实现方法
2020/11/25 Python
财务主管的岗位职责
2013/12/30 职场文书
高二生物教学反思
2014/01/27 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
信息工作经验交流材料
2014/05/28 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
怎样写辞职信
2015/02/27 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android