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编程语言开发动态WAP页面
Oct 09 PHP
基于PHP与XML的PDF文档生成技术
Oct 09 PHP
php中的观察者模式
Mar 24 PHP
php 文件上传类代码
Aug 06 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
php单链表实现代码分享
Jul 04 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
世界收音机发展史
2021/03/01 无线电
再次研究下cache_lite
2007/02/14 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
Django框架中的对象列表视图使用示例
2015/07/21 Python
python实现redis三种cas事务操作
2017/12/19 Python
python实现顺序表的简单代码
2018/09/28 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python 内存管理机制全面分析
2021/01/16 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
Java语言的优势
2015/01/10 面试题
大学学年自我鉴定
2013/10/28 职场文书
办公室助理岗位职责
2013/12/25 职场文书
车间统计员岗位职责
2014/01/05 职场文书
自荐信写法介绍
2014/01/25 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
视光学专业自荐信
2014/06/24 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
一篇文章弄懂Python中的内建函数
2021/08/07 Python
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS