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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP的类 功能齐全的发送邮件类
Oct 09 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
php简单操作mysql数据库的类
Apr 16 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP模块化安装教程
Jun 01 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
零基础php编程好学吗
Oct 11 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
超清晰的document对象详解
2007/02/27 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
js字符串转成JSON
2013/11/07 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
python中星号变量的几种特殊用法
2016/09/07 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
介绍一下游标
2012/01/10 面试题
请假条的格式
2014/04/11 职场文书
政府门卫岗位职责
2014/04/29 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
教师岗位职责
2015/02/03 职场文书
门卫岗位职责
2015/02/09 职场文书
收入证明范本
2015/06/12 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
nginx rewrite功能使用场景分析
2022/05/30 Servers