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 高手之路(三)
Oct 09 PHP
php分页代码学习示例分享
Feb 20 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
php中stdClass的用法分析
Feb 27 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
TP3.2框架分页相关实现方法分析
Jun 03 PHP
PHP实现抽奖功能实例代码
Jun 30 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
显示、隐藏密码
2006/07/01 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
通过自学python能找到工作吗
2020/06/21 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
搞笑创意广告语
2014/03/17 职场文书
产品生产计划书
2014/05/07 职场文书
洗手间标语
2014/06/23 职场文书
写得不错的求职信范文
2014/07/11 职场文书
python 中yaml文件用法大全
2021/07/04 Python
Nginx的基本概念和原理
2022/03/21 Servers
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技