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 相关文章推荐
优化使用mysql存储session的php代码
Jan 10 PHP
php 静态页面中显示动态内容
Aug 14 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php数组删除元素示例
Mar 21 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
php的ddos攻击解决方法
Jan 08 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
php7函数,声明,返回值等新特性介绍
May 25 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
php 数组二分法查找函数代码
2010/02/16 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
中学生寄语大全
2014/04/03 职场文书
怎样写家长意见
2015/06/04 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
三下乡活动心得体会
2016/01/23 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
总结Pyinstaller打包的高级用法
2021/06/28 Python
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python